使用fwrite(little endian issue)将十六进制字节写入文件

时间:2014-10-29 23:24:01

标签: c

我正在尝试使用fwrite将十六进制字节写入文件,但由于小端,它的顺序错误。有没有人知道一个简单的方法来解决问题而无需编写另一个函数来交换字节?感谢。

我的代码实际上是将每8字节的二进制序列转换为2字节的十六进制值并写入文件。例如,00000000 - > 00,00010010 - > 12,...,并将每个2字节的结果写入文件。

我以前写的文件是:

unsigned char hex;
char two_bytes[8]="";   // 8 bytes binary sequence

hex = strtol(two_bytes, NULL, 2);
fwrite(&hex, sizeof(hex), 1, fd);  //but write in the wrong order

1 个答案:

答案 0 :(得分:0)

您可以使用htonl将您的主机字节序转换为“network endian”(big endian)。

hex = htonl(strtol(two_bytes, NULL, 2));

...如果你不介意拉一些花哨的标题。