我正在为此代码苦苦挣扎:
MAKEFOURCC('R','I','F','F');
该函数是C ++的翻译,在Delphi中应该像这样:
function MAKEFOURCC(const ch0: AnsiChar;
const ch1: AnsiChar;
const ch2: AnsiChar;
const ch3: AnsiChar): FOURCC; inline;
begin
Result:= DWORD(Ord(ch0)) or
(DWORD(Ord(ch1)) shl 8) or
(DWORD(Ord(ch2)) shl 16) or
(DWORD(Ord(ch3)) shl 24);
end;
现在,这将导致(big-endian)$ 46464952,这是错误的。 应该是52494646美元。
看看微软的解释,这个宏的代码是:
#define MAKEFOURCC(ch0,ch1,ch2,ch3) \
((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ));
颠倒ch3,ch2,ch1和ch0的顺序会得到正确的值:
Result:= DWORD(Ord(ch3)) or
(DWORD(Ord(ch2)) shl 8) or
(DWORD(Ord(ch1)) shl 16) or
(DWORD(Ord(ch0)) shl 24);
现在我在这里想念什么? 预先感谢。