#codec #binary-data #binary #binary-format #data-encoding #decoding #fixed-size

app inlay

用于编码和解码简单二进制数据结构的 CLI 工具

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 次下载

MIT 许可证

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