4 个版本
使用旧 Rust 2015
0.1.3 | 2016 年 8 月 11 日 |
---|---|
0.1.2 | 2016 年 4 月 26 日 |
0.1.1 | 2016 年 4 月 22 日 |
0.1.0 | 2016 年 4 月 19 日 |
#160 在 #hex
22KB
711 行
罗夏测试
根据常见的布局定义格式化二进制数据。
示例
use rorschach::{Definition, Field, LittleEndian};
use rorschach::formatter::{self, Color};
let def = Definition::default()
.field(Field::named("sequence")
.is::<u32>(LittleEndian)
.style(Color::Fixed(255).normal()))
.field(Field::named("buttons")
.bytes(3)
.binary()
.style(Color::Fixed(3).normal()))
.field(Field::named("trigger.left")
.is::<u8>(LittleEndian)
.style(Color::Fixed(255).on(Color::Fixed(63)).underline()))
.field(Field::named("trigger.right")
.is::<u8>(LittleEndian)
.style(Color::Fixed(255).on(Color::Fixed(63))))
.field(Field::padding()
.bytes(3))
.field(Field::named("pad.left.x")
.is::<i16>(LittleEndian)
.style(Color::Fixed(255).on(Color::Fixed(27)).underline()))
.field(Field::named("pad.left.y")
.is::<i16>(LittleEndian)
.style(Color::Fixed(27).normal()))
.field(Field::named("pad.right.x")
.is::<i16>(LittleEndian)
.style(Color::Fixed(255).on(Color::Fixed(36)).underline()))
.field(Field::named("pad.right.y")
.is::<i16>(LittleEndian)
.style(Color::Fixed(36).normal()))
.field(Field::padding()
.bytes(12))
.field(Field::named("acceleration.pitch")
.is::<i16>(LittleEndian)
.style(Color::Fixed(124).normal()))
.field(Field::named("acceleration.yaw")
.is::<i16>(LittleEndian)
.style(Color::Fixed(160).normal()))
.field(Field::named("acceleration.roll")
.is::<i16>(LittleEndian)
.style(Color::Fixed(196).normal()))
.field(Field::named("orientation.pitch")
.is::<i16>(LittleEndian)
.style(Color::Fixed(57).normal()))
.field(Field::named("orientation.yaw")
.is::<i16>(LittleEndian)
.style(Color::Fixed(93).normal()))
.field(Field::named("orientation.roll")
.is::<i16>(LittleEndian)
.style(Color::Fixed(129).normal()))
.field(Field::padding()
.bytes(16));
结构化
结构化格式化器从网络相关 RFC 中常用的 ASCII 艺术表格中获得灵感。
formatter::Structured::default()
.header(true)
.style(Default::default())
.format(&def, buffer, io::stdout())
.unwrap()
内联
内联格式化器是最简单的格式化器,它只是将字节按十六进制顺序打印出来,但同时也支持彩色输出,这有助于格式反转。
formatter::Inline::default()
.newline(true)
.split(4)
.style(Default::default())
.format(&def, buffer, io::stdout())
.unwrap()
依赖项
~235KB