5 c endianness fread
我正在读取bmp文件的标题.我的系统和bmp文件值都是小端格式.所以我读如下:
uint32_t fileSize;
fread(&fileSize,1,4,bmpFile);
Run Code Online (Sandbox Code Playgroud)
在bmp文件中,这些字节按以下顺序排序:... 36 04 01 00 ... fileSize的结果值为66614,即:0x00010436.我得到了正确的值,没有问题.
不过有些事困扰我.这个代码对大端机器的工作方式是否相似,或者fread()的行为方式不同而且我得到错误的0x36040100?
fread将数据“按原样”读取到内存中,因此您的代码在大端 CPU 上的行为肯定会与在小端 CPU 上的行为不同。
换句话说,fread不知道您正在阅读uint32_t。众所周知fread,您想要读取 4 个字节到fileSize变量所在的内存位置。
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |