14 反之亦然。 如果相关,我正在运行RedHat。 byte — 费马的学生 source 6 什么类型的二进制文件? — 斯特凡Chazelas 1 无论如何,对于任何文件格式,我相信您都可以使用Perl和pack / unpack编写单行代码以转换其字节序。对于某些格式,它将比其他格式更长。;-) — Ilmari Karonen 2015年
34 您无法执行此操作,因为对于这种转换,您需要了解二进制内容的含义。 例如,如果二进制文件中有字符串,则不得转换,并且4字节整数可能需要与2字节整数不同的处理方式。 换句话说,对于字节顺序转换,您需要数据类型描述。 — chi地 source 7 我只是这么说。它不只是交换每对字节那么简单。例如,bigendian中的4字节整数01 02 03 04在little endian中可能看起来像这样04 02 03 01 NOT 02 01 04 03 cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html — Rob 1 同意,在原始的无类型字节流上,字节序没有意义...如果OP不编辑他的问题,这应该是可接受的答案 — Thomas [需要引用]-AFAIK,除非应用程序明确保留某些字节顺序而不保留其他字节顺序,否则通常会始终对字节或单词进行一致的排序。 — 暂停,直到另行通知。 1 @DennisWilliamson:UTF-8或ASCII字符串不具有字节序。UTF-8指定字节顺序,而ASCII为7位并且没有多字节令牌。UTF-16字符串确实具有字节序,并且可能具有也可能没有BOM标记该字节序。旨在与Windows或Java进行交互的Unix二进制文件可能同时具有两种类型的字符串,这意味着在转换时必须区分它们。 — 凯文 我来这里是为了寻找一个程序,您可以在其中提供数据描述和数据,然后将其转换。到目前为止,我还没有找到这样的程序,但这并不意味着它无法完成。 — Levi Morrison
32 您可以使用进行字节交换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 — 罗伊马 source
0 为了更改文件的字节序,假定字(32位)大小,此1个衬纸应为您工作: hexdump -v -e '1/4 "%08x"' -e '"\n"' input_file | xxd -r -p > output_file — hesham_EE source