永发信息网

网络字节序与主机字节序

答案:1  悬赏:80  手机版
解决时间 2021-03-07 19:17
网络字节序与主机字节序
最佳答案
不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序
最常见的有两种
1. Little endian:将低序字节存储在起始地址
2. Big endian:将高序字节存储在起始地址

LE little-endian
最符合人的思维的字节序
地址低位存储值的低位
地址高位存储值的高位
怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说
低位值小,就应该放在内存地址小的地方,也即内存地址低位
反之,高位值就应该放在内存地址大的地方,也即内存地址高位

BE big-endian
最直观的字节序
地址低位存储值的高位
地址高位存储值的低位
为什么说直观,不要考虑对应关系
只需要把内存地址从左到右按照由低到高的顺序写出
把值按照通常的高位到低位的顺序写出
两者对照,一个字节一个字节的填充进去

例子:在内存中双字0x01020304(DWORD)的存储方式

内存地址
4000 4001 4002 4003
LE 04 03 02 01
BE 01 02 03 04

例子:如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为
big-endian little-endian
0x0000 0x12 0xcd
0x0001 0x23 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
x86系列CPU都是little-endian的字节序.

大端小端转换方法:
Big-Endian转换成Little-Endian如下:
#define BigtoLittle16(A) ((((uint16)(A) & 0xff00) >> 8) |
(((uint16)(A) & 0x00ff) << 8))
#define BigtoLittle32(A) ((((uint32)(A) & 0xff000000) >> 24) |
(((uint32)(A) & 0x00ff0000) >> 8) |
(((uint32)(A) & 0x0000ff00) << 8) |
(((uint32)(A) & 0x000000ff) << 24))

大端小端检测方法:
  如何检查处理器是big-endian还是little-endian?
  联合体union的存放顺序是所有成员都从低地址开始存放,利用该特性就可以轻松地获得了CPU对内存采用Little-endian还是Big-endian模式读写。
int checkCPUendian()
{
union
{
unsigned int a;
unsigned char b;
}c;
c.a = 1;
return (c.b == 1);
}

网络字节顺序
网络字节顺序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,从而可以保证数据在不同主机之间传输时能够被正确解释。网络字节顺序采用big endian排序方式。

为了进行转换 bsd socket提供了转换的函数 有下面四个
htons 把unsigned short类型从主机序转换到网络序
htonl 把unsigned long类型从主机序转换到网络序
ntohs 把unsigned short类型从网络序转换到主机序
ntohl 把unsigned long类型从网络序转换到主机序

在使用little endian的系统中 这些函数会把字节序进行转换
在使用big endian类型的系统中 这些函数会定义成空宏

同样 在网络程序开发时 或是跨平台开发时 也应该注意保证只用一种字节序 不然两方的解释不一样就会产生bug.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
网上抢火车票的几率大不大啊,我国庆节想回去
宜家鞋柜799元是啥栏样多大尺寸
烦恼近反义词是什么
奢莲中韩益盛汉参化妆品怎么去啊,有知道地址
送一位老师礼物最少用多少钱?
1千米等于多少厘米
怎么使用手动闪光灯啊?参数设置有什么技巧?
Take it easy 和Don't be nervous.有什么不同
大家好!请问公司效益不好要辞退员工,怎么赔偿
峰盛电器家私城地址有知道的么?有点事想过去
道光皇帝几岁当上皇帝的?
临春五路二巷怎么去啊,有知道地址的么
热干面吃多怀男孩吗?
玩飞龙传说游戏机怎么可以攻关,我一直输,看
水泥安定性是指()。
推荐资讯
pr打开没有声音了怎么回事–手机爱问
华佗故里中医推拿泡脚健康长寿馆地址有知道的
新款福克斯泊车辅助故障怎么维修
力帆330s档是什么作用
Al2(SO4)3与氨水反应的方程式(急)
小升初大名新一中常考叙事作文2017年
团体心理咨询方案设计的要求不包括()。A.操作
最近脸上长了好多痘痘。还发炎!看网上的苗竹
我是新装的64位 W7 系统 在安装 疯狂的小鸟里
河北农业大学现代教育技术中心我想知道这个在
丽美窗帘中心我想知道这个在什么地方
痤疮可以用蕾萌凝胶吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?