关闭

代码实现判断主机字节序(大端 or小端 )

标签: 测试网络
5463人阅读 评论(2) 收藏 举报
分类:

字节序有两种表示方法:大端法(big ending),小端法(little  ending)。

网络字节序采用的是大端法。

主机字节序不同的CPU采用的方法不一样,可以通过代码来查看自己主机的字节序。

大端法:高位字节排放在内存低地址端,低位字节排放在内存的高地址端。

小端法:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

看一个unsigned short 数据,它占2个字节,给它赋值0x1234。

若采用的大端法,则其低地址端应该存放的是0x12;

若采用的小端法,则其低地址端应该存放的是0x34;

可以通过联合体来获得其高低地址的数据。

测试主机字节序的代码:

#include <stdio.h>

typedef union{
	unsigned short value;
	unsigned char bytes[2];
}Test;

int main(void)
{
    Test test_value;
    test_value.value = 0x1234;

    if(test_value.bytes[0] == 0x12 && test_value.bytes[1] == 0x34)
    	printf("big ending");
    else if(test_value.bytes[0] == 0x34 && test_value.bytes[1] == 0x12)
    	printf("little ending");
    else
    	printf("use test_value error");
    return 0;
}


3
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:492053次
    • 积分:4926
    • 等级:
    • 排名:第5972名
    • 原创:70篇
    • 转载:6篇
    • 译文:0篇
    • 评论:84条
    文章分类
    最新评论