是否有一个 oneliner 可以将二进制文件从小端转换为大端?

是否有一个 oneliner 可以将二进制文件从小端转换为大端?

反之亦然。

如果相关的话,我正在运行 RedHat。

答案1

您可以使用字节交换dd。这样就够了吗?如果没有,请更新您的问题以提供输入文件和预期输出文件的示例。

echo hello >infile
dd conv=swab <infile >outfile

hex infile
   0000 68 65 6c 6c 6f 0a                                 hello.
hex outfile
   0000 65 68 6c 6c 0a 6f                                 ehll.o

答案2

您不能这样做,因为对于这样的转换,您需要知道二进制内容的含义。

例如,如果二进制文件中有一个字符串,则不得对其进行转换,并且 4 字节整数可能需要与两字节整数不同的处理。

换句话说,对于字节顺序转换,您需要数据类型描述。

答案3

为了更改文件字节顺序,假设字(32 位)大小,这 1 行应该适合您:

hexdump -v -e '1/4 "%08x"' -e '"\n"' input_file | xxd -r -p > output_file

答案4

如果您不关心文件内容而只想交换字节,那么请尝试结束转换。它只是标准字节转换函数的包装,因此它支持 2、4 和 8 字节长整数的转换。但这不是一个班轮,因为它是一个单独的项目。

相关内容