2 个版本 (1 个稳定版)
1.0.0 | 2020年3月27日 |
---|---|
0.1.0 | 2020年3月24日 |
#21 in #swap
每月下载量 21 次
15KB
176 行
分支 | 状态 |
---|---|
master |
BSWP
Rust 字节交换库。
使用模式和掩码进行字节交换。
最低支持的 Rust 版本 (MSRV)
bswp
需要 Rust 1.40.0.
使用方法
迭代器
use bswp::pattern::{Pattern, Predicate, swap_iter};
let pattern = Pattern::new(0x42).with_mask(0xFF); // replace byte by 0x42
let predicate = Predicate::new().with_periodicity(2).with_offset(1); // replace odd bytes
let swaps = &[(pattern, predicate)];
let source: [u8; 4] = [0x41, 0x41, 0x41, 0x41];
let swapped = swap_iter(&source, swaps); // iterator on result
let swapped: Vec<u8> = swapped.collect();
assert_eq!(swapped, vec!(0x41, 0x42, 0x41, 0x42));
可变文件数据
use std::io::Cursor;
use bswp::pattern::{Pattern, Predicate};
use bswp::io::swap_io;
// in memory reader (implements `Read`)
let mut reader: Cursor<Vec<u8>> = Cursor::new(vec![0x41, 0x42, 0x43, 0x44]);
// in memory writer (implements `Write`)
let mut writer: Cursor<Vec<u8>> = Cursor::new(Vec::new());
let swaps: &[(Pattern, Predicate)] = &[(Pattern::new(0x42).with_mask(0xFF), Predicate::new().with_periodicity(2).with_offset(0))];
let swap = swap_io(&mut reader, &mut writer, swaps);
assert!(swap.is_ok());
assert_eq!(swap.unwrap(), 4); // 4 bytes written
assert_eq!(writer.into_inner(), vec![0x42, 0x42, 0x42, 0x44])
变更日志
请参阅 CHANGELOG 以获取发布历史。