在jpeg文件头首两个字节,如果我们需要将0xFFD8写入文件的话,如果直接调用C语言的fwrite函数是:
unsigned short p = 0xFFD8;
fwrite(&p, 1, byteSize, fp);
此时在文件中看到的是:
这里是大小端的概念,目前计算机以小端存储为主,在p在内存中的分布是:
也就是低字节是低位,高字节是高位。
&p为 0x00AFFA18
fwrite会逐字节的写入,也就是它会先写入d8、再写入ff也就是上面的D8FF
如果需要写入FFD8的话,对于两个字节的变量来说需要给交换位置:
unsigned short p = (p >> 8) & 0xFF | ((p & 0xFF) << 8);
fwrite(&p, 1, byteSize, fp);