ntohs()
网络字节序->主机字节序
网络字节序规定了数据在网络中传输的字节顺序,各主机再根据自身的环境将网络字节序转换成适应自身的主机字节序。
数值:0x1245
在X86系统中这样存储
00 12
01 45
发送时从低地址读取数据
所以发送顺序为 12 45
而在其它系统中有可能这样存储:
内存地址 数据
00 45
01 12
如果不转换为网络字节序,按 45 12发送,则X86系统就理解为0x4512了。
要。只要类型长度超过1字节的,都要转换网络字节序。
socket api,这些很容易搜索到的,htonl,htos,用法还是自己找吧,自己找的,才会印象深刻
1、概念
字节序,又称端序,英文名称Endianness。字节序是指存放多字节(byte)数据的顺序。多用于整数在内存中的存放方式和网络传输的传输顺序,以及在蓝牙通讯中,表示数据传输字节长度。
2、原因
大小端序跟硬件的体系结构有关,跟 *** 作系统无关。
3、区别
大端字节序:高字节存于内存低地址,低字节存于内存高地址
小端字节序:高字节存于内存高地址,低字节存于内存低地址
例如:
实例一:整数在内存中的存放方式:
一个long型数据0x12345678
大端字节序:
内存低地址-》0x12
0x34
0x56
内存高地址-》0x78
小端字节序:
内存低地址-》0x78
0x56
0x34
内存高地址-》0x12
实例二:网络或蓝牙传输中的传输顺序:
传输长度为349的数据,转化为十六进制为0x015d
大端字节序传输:0x015d
内存低地址(前)0x01(高字节)
内存高地址(后)0x5d(低字节)
小端字节序传输:0x5d01
内存低地址(前)0x5d(低字节)
内存高地址(后)0x01(高字节)
备注:大小端字节序,是以字节为基本单位的,仅可针对多字节的情况,单字节:
0xF8转化为二进制:1111 1000第0位为0,第7位为1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)