socket 通信 Windos 和 Linux之间 Big endian 和 little endian的转换策略
来源:互联网 发布:linux scp用法 编辑:程序博客网 时间:2024/06/05 04:56
Big endian 和 little endian
本次测试仅仅一32Bits的Intel X86系统和Moto Power PC系统TCP/IP socket connection联调作为讨论内容。
结论如下:
传输某一结构体。
#pragma pack(4)
typedef struct{
char name[6];
int age;
char sex;
short tel;
}student;
#pragma pack()
NBO network byte order 网络字节序
HBO host byte order 主机字节序
1.当peer ends都为X86系统时,两端都是little endian,我们无需关心如何NBO和HBO转换,
发端:
student stu1;
stu1.age = 0x00000304;
memcpy( stu1.name,"abcdef",6);
stu1.sex = 'f';
stu1.tel = 0x0809;
收端:
age=0x304
tel=0x809
value=0X61 addr=0Xbfe6d3f0
value=0X62 addr=0Xbfe6d3f1
value=0X63 addr=0Xbfe6d3f2
value=0X64 addr=0Xbfe6d3f3
value=0X65 addr=0Xbfe6d3f4
value=0X66 addr=0Xbfe6d3f5
value=0X0 addr=0Xbfe6d3f6
value=0X0 addr=0Xbfe6d3f7
value=0X4 addr=0Xbfe6d3f8
value=0X3 addr=0Xbfe6d3f9
value=0X0 addr=0Xbfe6d3fa
value=0X0 addr=0Xbfe6d3fb
value=0X66 addr=0Xbfe6d3fc
value=0X0 addr=0Xbfe6d3fd
value=0X9 addr=0Xbfe6d3fe
value=0X8 addr=0Xbfe6d3ff
2.当peer ends都为Power系统时,两端都是big endian,我们无需关心如何NBO和HBO转换.
3.当一端为Power PC一端为X86时,小端需要做发送前的转换和接受后的转换,而大端不需要.
发送前小端对short型调用htons,对long和int调用htonl.
接受后小端对short型调用ntohs,对long和int调用ntohl.
则可以保证通过调用结构体变量得到的数值是正确的.
亦即发送方age = 0x00000304 ,接受方为也是0x000000304.如果不转化,可能变成0x04030000.
- socket 通信 Windos 和 Linux之间 Big endian 和 little endian的转换策略
- socket 通信 Windos 和 Linux之间 Big endian 和 little endian的转换策略
- socket 通信 Windos 和 Linux之间 Big endian 和 little endian的转换策略
- Big Endian和Little Endian的转换...
- Big-Endian和Little-Endian转换
- little endian 和 big endian 转换
- java socket 通信中对数据的处理(Big-Endian和Little-Endian)
- little-endian和big-endian的区别
- Little endian 和 big endian 的区分
- Big Endian和Little Endian的区别
- Big Endian和Little Endian的区别
- Little endian和Big endian的区别
- Big Endian和Little Endian的区别
- Big Endian和Little Endian的区别
- Big Endian和Little Endian的区别
- Little-endian和Big-endian的区别
- Big Endian和Little Endian的区别
- Big-endian和Little-endian
- 朋友,谁会Symbian S40 Symbian S60 v3/v5 Android?
- AS3 Socket 汉字乱码深入研究
- AS3与.net之间的Socket编码转换的endian问题
- Windows系统和Linux系统中的静态链接库与动态链接库(一)
- as3与.net进行socket通信
- socket 通信 Windos 和 Linux之间 Big endian 和 little endian的转换策略
- some
- java学习书籍
- Embarcadero RAD Studio XE 15.0.3953.35171 原版下载及破解
- linux shell bash for editing file
- ubuntu解压命令全览
- 第二天
- 爱!
- 2010.11月总结