将字节写入文件会在某些平台上交换

时间:2013-08-22 19:18:58

标签: c io posix fwrite

以下代码为我提供了不同系统的不同输出:

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

那我该怎么办?

1 个答案:

答案 0 :(得分:1)

看起来像hexdump实用程序交换字节。请显示您在每个平台中使用的hexdump命令。

要确认,请使用

进行测试
byte_t data[] = { 'a', 'b', 'c', 'd', 'e' }

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