假设有二进制文件 a.bin ,前 10 个字节如下(使用 16 进制显示,原始数据使用小端模式):
39 00 00 00 12 3F 6F 5A A7 04
希望这样读取:
39 00 00 00 -> 第 1-4 个字节转为 int , 0x00000039 = 57
12 3F -> 5-6 个字节转为 int , 0x3F12 = 16146
6F 5A A7 04 -> 7-10 个字节转为 int , 0x045AA76F = 73049967
文件剩余部分也是这个格式,希望可以每 10 个字节,输出一行数据,每行 3 个数,并用空格间隔。
现在的处理方法: input:
echo $(od -An -t dI -j 0 -N 4 a.bin && od -An -t dI -j 4 -N 2 a.bin && od -An -t dI -j 6 -N 4 a.bin)
output:
57 16146 78076527
有些麻烦,有没有更好的方法呢。
1
crclz 2021-01-11 19:34:03 +08:00
|
2
skinny 2021-01-11 19:38:00 +08:00 1
struct.unpack
|
3
msg7086 2021-01-12 02:24:37 +08:00 via Android
遇事不决 unpack,很多语言里都有的工具。
|
4
faketemp 2021-01-12 07:09:36 +08:00
|