字节写入文件被在某些平台上

字节写入文件被在某些平台上

问题描述:

下面的代码让我在不同的系统不同的输出易位:字节写入文件被在某些平台上

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 

那么我该如何继续?

+0

是“byte_t”跨两个平台的一致数据类型吗? –

+2

“代码不同”?请向我们展示* actual *代码,而不是一些近似值。 – NPE

+3

我认为你所展示的代码会以你在任何*平台上描述的方式行事(不管字节顺序等),这是不太可能的。请包括一个SSCCE(http://sscce.org/)。 – NPE

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

要使用

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

确认,测试并比较hexdump都和猫(或类型)的输出。

+0

我用xxd测试了我的输出和数据按正确的顺序打印出来。 Hexdump仍然显示反向的字节。我认为你是对的,这只是hexdump在某些平台上的行为而不是写入字节的数据交换。 – user1660675

+0

你使用'hexdump'的选项是什么? –

+0

我没有使用任何选项(也许我应该有)。文件被命名为mywave.wav,所以我写道: hexdump mywave.wav – user1660675