下面的代码让我在不同的系统不同的输出:

int fd = open(filename, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO);
byte_t data[] = { 0x00, 0x01, 0x02, 0x03, 0x0a, 0x0b 0x0c, 0x0d };

write(fd, data, sizeof(data));


在Mac上一个文件名的“hexdump都”给我期望

00 01 02 03 0a 0b 0c 0d


在Ubuntu和Windows上(代码不同,但效果相同),您会得到

01 00 03 02 0b 0a 0d 0c


我想打印平台

00 01 02 03 0a 0b 0c 0d


所以,我应该如何着手?

最佳答案

它看起来像hexdump工具交换字节。请显示您在每个平台上使用的hexdump命令。

要确认,请使用

byte_t data[] = { 'a', 'b', 'c', 'd', 'e' }


并比较hexdump和cat(或type)输出。

关于c - 在某些平台上将字节写入文件被交换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18389096/

10-11 23:49