下面的代码在不同的系统上给出了不同的输出:
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(或类型)输出。
关于c - 在某些平台上向文件写入字节会被交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18389096/