使用以下代码写入文件
int main(int argc, char * argv[])
{
uint32_t pattern1, pattern2;
int i, times;
sscanf("ae75db0f", "%x", &pattern1);
sscanf("518a24f0", "%x", &pattern2);
FILE * outFile = fopen(argv[1],"wb");
printf ("Pattern 1: %0x \nPattern 2: %0x \n", pattern1, pattern2);
times = 524288; // Write out 4 mB of data
for (i = 0; i < times; i++) {
fwrite(&pattern1, 4, 1, outFile);
fwrite(&pattern2, 4, 1, outFile);
}
fclose (outFile);
}
在命令行上,我执行xxd file | less
00018c0: f024 8a51 0fdb 75ae f024 8a51 0fdb 75ae .$.Q..u..$.Q..u.
00018d0: f024 8a51 0fdb 75ae f024 8a51 0fdb 75ae .$.Q..u..$.Q..u.
00018e0: f024 8a51 0fdb 75ae f024 8a51 0fdb 75ae .$.Q..u..$.Q..u.
00018f0: f024 8a51 0fdb 75ae f024 8a51 0fdb 75ae .$.Q..u..$.Q..u.
它没有显示应该写入文件本身的“正确”值。
最佳答案
欢迎来到世界末日:
http://en.wikipedia.org/wiki/Endianness
x86/x64体系结构(像现在的大多数体系结构一样)是小尾数的:它意味着多字节值存储在内存中,首先是最低有效字节(低内存地址)。