使用memcpy反转字节顺序

时间:2011-05-03 19:00:48

标签: iphone ios endianness

我正在编写一个创建内存中WAV文件的方法。文件的前4个字节应该包含字符'RIFF',所以我写这样的字节:

Byte *bytes = (Byte *)malloc(len); // overall length of file
char *RIFF = (char *)'RIFF';
memcpy(&bytes[0], &RIFF, 4);

问题在于,由于little-endianness,它将前4个字节写为'FFIR'。要纠正这个问题,我只是这样做:

Byte *bytes = (Byte *)malloc(len); 
char *RIFF = (char *)'FFIR';
memcpy(&bytes[0], &RIFF, 4);

这样可行,但是有一种更好看的方式让memcpy反转它所写字节的顺序吗?

1 个答案:

答案 0 :(得分:4)

你用指针做了一些坏事(有些奇怪但没有错误的东西)。试试这个:

Byte *bytes = malloc(len); // overall length of file
char *RIFF = "RIFF";
memcpy(bytes, RIFF, 4);

它会正常工作。