分析:
所谓大小端转换 也就是实现 高低字节的转换
#include <stdio.h>
int main()
{
int a = 1, result;
result = ((a & 0x000000ff) << 24) |
((a & 0x0000ff00) << 8)|
((a & 0x00ff0000) >> 8)|
((a & 0xff000000) >> 24);
printf("%d\n", result);
return 0;
}
将 变量a 赋值为 1, 二进制为 00000000 00000000 00000000 00000001
高字节 低字节
如何判断本机是大端还是小端
int main()
{
int a = 0x1234;
char *b = (char *)&a; //取首地址,首地址为低字节
if((b && 0x1234) == 0x12) //低字节存放的值为高字节,则为大端
{
printf("big\n");
}
else
{
printf("little\n"); //低字节存放的值为低字节,则为小端
}
while(1);
return 0;
}
口诀:小同大异
转载:https://blog.csdn.net/sxhlovehmm/article/details/41487133
在C语言中除了8位的char型之外,还有16位的short型,32位的long型(要看具体的编译器),对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。
大端模式:
字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端模式:
与大端存储模式相反,在小端存储模式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。