如何从二进制文件中提取位于特定位置的12字节块。
如果我想要提取前12字节,我可以这样做:
head -c12 file.bin>output
如果我想从byte61中提取12个字节,我可以这样做
head -c72 file.bin|tail -c12 >output
如果我需要提取20个12字节的块,是否有更简单的方法?
谢谢
使用dd
命令:
dd bs=1 seek=60 count=12 if=file.bin of=output
你可以编写一个shell循环来替换这些数字。
如果有大量数字需要处理或需要快速处理,也可以考虑使用awk、Perl或Python。
iseek
替换为skip
:dd bs=1 skip=60 count=12 if=file.bin of=output
。 - Ludwig Weinzierl使用xxd:
xxd -p -seek 3d -l 12 file.bin > output
3d
在十六进制中表示为 61
使用 hexdump:
hexdump -ve '16/1 "%0.2x " "\n"' -s 3d -n 12 file.bin > output
atoi()
,这个 API 真的很糟糕。所以,“3d” 实际上意味着 3。是的,这很愚蠢。 - Timmmmstrtol
支持十六进制输入(0xff
),还支持疯狂的八进制模式(0777
)。所以要小心! - Timmmm