我正在编写一个创建内存中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
反转它所写字节的顺序吗?
答案 0 :(得分:4)
你用指针做了一些坏事(有些奇怪但没有错误的东西)。试试这个:
Byte *bytes = malloc(len); // overall length of file
char *RIFF = "RIFF";
memcpy(bytes, RIFF, 4);
它会正常工作。