我将fwrite信息输出到二进制文件但是当我在xxd中查看它时,hex的输出不是有序的。这是二进制文件的外观吗?
要打印到目的地的代码:
int delim[] = { 0xabcd1234 };
fwrite(delim, 4, 1, destination);
char buffer[] = "I like dog";
fwrite(buffer, 1, 10, destination);
xxd输出:
0000000: 3412 cdab 4920 6c69 6b65 2064 6f67 4...I like dog
正如您所看到的,十六进制数是3412 cdab而不是abcd1234
答案 0 :(得分:4)
因为这就是你的处理器显然存储整数的方式。
有关维基百科的更多信息 - Endianness
答案 1 :(得分:3)
正如Tom van der Woredt所指出的,这是一个字节序问题(可能是xxd的问题,使它转储单个字节,而不是双字节)。
如果要确保文件中的十六进制按特定顺序,请使用无符号字符数组,而不是:
unsigned char delim[] = {0xab, 0xcd, 0x12, 0x34};
fwrite(delim, sizeof *delim, sizeof delim, destination);
答案 2 :(得分:0)
这是处理器存储整数的小端方式。