9 个版本
0.3.2 | 2019 年 7 月 29 日 |
---|---|
0.3.1 | 2019 年 7 月 29 日 |
0.2.5 | 2019 年 7 月 28 日 |
0.2.2 | 2019 年 5 月 6 日 |
0.2.1 | 2019 年 4 月 24 日 |
#2366 in 编码
每月 38 次下载
2MB
1.5K SLoC
Inlay
此程序提供了从二进制数据到 csv 以及从 csv 到二进制数据的简单翻译。它旨在处理简单、固定大小的二进制格式,特别是在没有针对该格式的特定工具时进行初步测试和开发。
用法
inlay 0.3.2
nsmryan <[email protected]>
A command line tool for quickly reading and writing simple binary formats
USAGE:
inlay.exe <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
decode CLI tool for encoding and decoding simple binary data structures
encode CLI tool for encoding and decoding simple binary data structures
help Prints this message or the help of the given subcommand(s)
summary CLI tool for encoding and decoding simple binary data structures
解码
USAGE:
inlay.exe decode [FLAGS] [OPTIONS] <template_file> [in_file_globs]...
FLAGS:
-h, --help Prints help information
-r, --rows Decode row based file
-V, --version Prints version information
OPTIONS:
-l, --log-level <log_level> [default: error]
-o, --output <out_file> [default: ]
ARGS:
<template_file>
<in_file_globs>...
编码
USAGE:
inlay.exe encode [FLAGS] [OPTIONS] <template_file> [in_file_globs]...
FLAGS:
-h, --help Prints help information
-r, --rows Encode row based file
-V, --version Prints version information
OPTIONS:
-l, --log-level <log_level> [default: error]
-o, --output <out_file> [default: ]
ARGS:
<template_file>
<in_file_globs>...
摘要
USAGE:
inlay.exe summary <template_file>
安装
可以使用以下命令使用 cargo 安装 'inlay' 工具
cargo install inlay
还有可用的版本。
模板文件
'inlay' 程序使用模板文件,这些文件是带有字段名称和类型的 csv 文件。这些文件旨在易于编写或生成,包含以下描述的简单格式说明符和用于引用字段的名称。
这些文件还可以包含 'value' 列,并且可以在没有单独的值文件的情况下进行编码。
以下是一个用于 CCSDS 主要标题的示例模板文件
type,description
uint11_be:16, apid
uint1_be:16, secHeaderFlag
uint1_be:16, type
uint3_be:16, version
uint14_be:16, seqCount
uint2_be:16, seqFlag
uint16_be, packetLen
类型
类型由以下正则表达式给出:(uint8|uint16|uint32|uint64|int8|int16|int32|int64|float|double)_(be|le)
任何字段都可以是大端或小端,允许文件中存在混合端序。
例如,一个 16 位宽的大端无符号整数将是 'uint16_be'。
请注意,位字段使用冒号后的整数宽度给出(与 C/C++ 不同),因此一个位于 16 位位字段中的 3 位整数将是 'uint3_be:16'。
CSV -> 二进制
在构建二进制文件时,要编码的数据可以提供为 '基于行' 或 '基于列' 的 csv 文件。
基于行
必须提供以下格式的基于行的 csv 文件
type,description,value
uint8\_be,field1,1
uint16\_be,field2,141
uint32\_be,field3,1245
标题必须按顺序包含字段 typ、description 和 value。
基于列
基于列的 csv 文件提供包含每个二进制结构字段的标题,并且必须有一个模板文件
type,description,value
uint8\_be,field1,1
uint16\_be,field2,141
uint32\_be,field3,1245
请注意,如果存在 'value' 列,则忽略。此模板文件用于将字段名称与数据文件中的字段匹配,并给出编码数据时使用的类型。
二进制 -> CSV
在将二进制转换为 CSV 时,必须提供以下格式的文件:type,description uint64_be,a 64 bit field uint8_be,an 8 bit field
此文件必须包含标题 "type,description" 并包含定义如上所示类型的任意数量的条目。描述是可选的,并将复制到输出 csv 文件中。
将CSV编码为二进制格式时,输出CSV文件的格式与输入CSV文件完全相同。这意味着可以解码、修改并重新写入二进制结构。为了辅助此用例,如果在解码时提供的“模板”文件中存在“值”列,则该列将被忽略。这允许将解码得到的CSV文件用作解码其他二进制结构实例时的模板。
使用方式的变化
运行'inlay'工具的方式有多种。主要方式是编码或解码一系列记录,例如解码包含一个或多个记录的二进制文件,或者编码包含每行数据记录的CSV文件。
编码
将单个文件编码为二进制文件,行格式
- inlay encode template.csv
- inlay encode template.csv -o data.bin
将列CSV文件编码为二进制文件
- inlay encode template.csv data.csv
- inlay encode template.csv data.csv -o data.bin
将多个输入文件编码为各自的二进制文件
- inlay encode template.csv data.csv
- inlay encode template.csv data.csv data2.csv data3.csv
将多个输入文件编码为单个二进制文件
- inlay encode template.csv data.csv
- inlay encode template.csv data.csv data2.csv data3.csv -o data.bin
解码
解码单个二进制文件,行格式
- inlay decode template.csv data.bin -r
解码单个二进制文件,列格式
- inlay decode template.csv data.bin
解码多个二进制文件,行格式
- inlay decode template.csv data.bin data2.bin data3.bin -r
解码多个二进制文件,列格式
- inlay decode template.csv data.bin data2.bin data3.bin -r
将多个二进制文件解码为单个文件,行格式
- inlay decode template.csv data.bin data2.bin data3.bin -r -o output.csv
将多个二进制文件解码为单个文件,列格式
- inlay decode template.csv data.bin data2.bin data3.bin -o output.csv
摘要
总结你的二进制格式
- inlay summary template.csv
这会打印出二进制结构,提供字节和比特大小以及从结构起始的字节和比特偏移量。
许可证
Inlay的许可证为MIT或APACHE2,您可选择其中之一。
依赖项
~5.5–8MB
~119K SLoC