首页 > 其他 > 详细

大小端问题

时间:2014-04-18 18:59:50      阅读:515      评论:0      收藏:0      [点我收藏+]

大小端是计算机存储信息的不同方式。
大段:内存低地址位存储数据高位,内存高地址位存储数据低位。
小端:内存低地址位存储数据低位,内存高地址位存储数据高位。
举例,32位系统上 int value = 0x12345678
存储在0x0000-0x0003的内存地址上
大端:
0x0000 :  0x12
0x0001 :0x34
0x0002 :0x56
0x0003 :0x78
小端:
0x0000 :  0x78
0x0001 :0x56
0x0002 :0x34
0x0003 :0x12

用代码检验系统大端/小端

//返回值为1为小端,返回值为0为大端
bool CheckEnd() {
    int value = 1;
    return (*((char*)(&value)) == 1);
}

另外,网络字节序也是大端的

小端系统在发送数据和接收数据时需要使用以下htons/htonl 和 ntohs/ntohl 函数转换字节序

bubuko.com,布布扣
//htons
u16_t htons(u16_t value) {
    return (((value & 0xff00)>>8) |                    ((value & 0x00ff) << 8));
}

//htonl
u32_t htonl(u32_t value) {
    return (((value & 0xff000000) >> 24) |                    ((value & 0x00ff0000) >> 8) |                    ((value & 0x0000ff00) << 8) |                    ((value & 0x000000ff) <<24));
}

//ntohs
u16_t ntohs(u16_t value) {
    return htons(value);
}

//ntohl
u32_t ntohl(u16_t value) {
    return htonl(value);
}
bubuko.com,布布扣

 

大小端问题,布布扣,bubuko.com

大小端问题

原文:http://www.cnblogs.com/noanswer/p/3672562.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!