17 个版本
0.2.6 | 2023 年 7 月 1 日 |
---|---|
0.2.5 | 2023 年 7 月 1 日 |
0.2.4 | 2023 年 6 月 28 日 |
0.1.9 | 2023 年 6 月 19 日 |
#495 in 解析器实现
26 每月下载量
用于 schnauzer
55KB
1.5K SLoC
kex
流式十六进制转储库。
功能
- 流式 I/O。
- 与输出一起工作,实现
Write
特性。 - 可自定义的格式化
- 行去重
- 非常快
演示
二进制
简短指南
# Example
kex -a h8 -b h -g 8/2 -s 40 -n 10 file1 file2 file3 ...
将按顺序打印指定的文件作为单个流。如果没有指定文件,程序将期望从 stdin
获取输入。
参数
-a <format>[min_width]
- 地址格式。 (默认为 h8)
<format>
- 地址表示。接受值
- h - 十六进制
- b - 二进制
- d - 十进制
- o - 八进制
<min_width>
- 显示地址的最小宽度。除了十进制外,所有值都将用零填充。十进制用空格填充
-b <format>
- 原始数据的格式 (默认为 h)
<format>
- 字节表示。接受值
- h - 十六进制
- b - 二进制
- d - 十进制
- o - 八进制
- c - ASCII 字符。 (不包括字符/第三列)
- C - 符号表示法 + ASCII 字符。 (不包括字符/第三列)
-g group_size[/number_of_groups]
(默认为 8/2)
或
-g bytes_per_row
-s num_of_bytes_to_skip
(默认为 0)
-n num_of_bytes_to_rear
(如果未指定,将读取数据直到EOF)
库
示例
以下是一个示例
use kex::*;
use std::fs::File;
use std::io::stdout;
use std::io::{Read, Write};
fn main() {
let mut buf = [0u8; 4096];
// let stdin = std::io::stdin();
// let mut handle = stdin.lock();
let config = Config::new(
Some(AddressFormatter::new(AddressStyle::Hex(16), Default::default())),
ByteFormatter::new(Groupping::RepeatingGroup(Group::new(4, " "), 4), false, Default::default()),
Some(CharFormatter::default()),
true,
);
let mut printer = Printer::new(stdout(), 0, config);
let mut file = File::open("/bin/cat").expect("Can't open file");
while let Ok(size) = file.read(&mut buf) {
if size == 0 {
break;
}
assert!(printer.write_all(&mut buf[..size]).is_ok());
}
printer.finish();
}
请参阅crate根目录下examples
目录中的所有示例
去重
0000000000000000 cafebabe 00000002 01000007 00000003 |................|
0000000000000010 00004000 000111c0 0000000e 0100000c |..@.............|
0000000000000020 80000002 00018000 0000d0f0 0000000e |................|
0000000000000030 00000000 00000000 00000000 00000000 |................|
*
0000000000004000 cffaedfe 07000001 03000000 02000000 |................|
0000000000004010 11000000 08060000 85002000 00000000 |.......... .....|
0000000000004020 19000000 48000000 5f5f5041 47455a45 |....H...__PAGEZE|
0000000000004030 524f0000 00000000 00000000 00000000 |RO..............|
自定义格式化
0🤩deadbeef#deadbeef#deadbeef#deadbeef 💥................💨
*
32🤩deadbeef#deadbeef#43757374#6f6d2070 💥........Custom p💨
48🤩72696e74#696e67fe#edfafeed#fafeedfa 💥rinting.........💨
64🤩feedfafe#edfafeed#fafeedfa#feedfafe 💥................💨
80🤩edfafeed#fafeedfa*
88🤩
错误报告或功能请求
依赖项
~585KB