这个线程中已经有一个漂亮的技巧了 使用 dd 将字节写入所需地址的二进制文件,有没有办法交换字节(例如交换 0x00 和 0xFF),或用常用工具(例如 dd)替换字节?
xxd -p input_file | fold -w2 | perl -pe 's/00/ff/ || s/ff/00/' | xxd -r -p > output_file
xxd -p file
以连续十六进制转储方式转储二进制数据
file
。
fold -w2
每两个字符(= 每个字节)换行输入行。
perl -pe 's/00/ff/ || s/ff/00/'
交换输入字符串中的
00
和
ff
。
||
逻辑用作
if .. else ..
条件。否则输入
00
一旦转换为
ff
并立即再次转换回
00
。
xxd -r -p
是
xxd -p
的反转版本,用于转换输入 将十六进制字符串转换为二进制文件。
dd
通过
conv=swab
内置了此功能,“交换每对输入字节”。 如果您需要将文件格式从“字节交换”转换为“大端”(反之亦然),它非常有用:
dd if=file1.v64 of=file2.z64 conv=swab