字节写入文件被在某些平台上
下面的代码让我在不同的系统不同的输出易位:字节写入文件被在某些平台上
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都和猫(或类型)的输出。
我用xxd测试了我的输出和数据按正确的顺序打印出来。 Hexdump仍然显示反向的字节。我认为你是对的,这只是hexdump在某些平台上的行为而不是写入字节的数据交换。 – user1660675
你使用'hexdump'的选项是什么? –
我没有使用任何选项(也许我应该有)。文件被命名为mywave.wav,所以我写道: hexdump mywave.wav – user1660675
是“byte_t”跨两个平台的一致数据类型吗? –
“代码不同”?请向我们展示* actual *代码,而不是一些近似值。 – NPE
我认为你所展示的代码会以你在任何*平台上描述的方式行事(不管字节顺序等),这是不太可能的。请包括一个SSCCE(http://sscce.org/)。 – NPE