内存字节序
确认内存字节序
/* 确定你的电脑是大端字节序还是小端字节序 */
include <stdio.h>int check1()
{
int i = 1; //1在内存中的表示: 0x00000001
char *pi = (char *)&i; //将int型的地址强制转换为char型
return *pi == 0; //如果读取到的第一个字节为1,则为小端法,为0,则为大端法
}int main()
{
if (check1() == 1)
printf(“big\n”);
else
printf(“little\n”);return 0;
}
大端字节序转小端字节序
uint32_t reversebytes_uint32t(uint32_t value){
return (value & 0x000000FFU) << 24 | (value & 0x0000FF00U) << 8 |
(value & 0x00FF0000U) >> 8 | (value & 0xFF000000U) >> 24;
}