字节序相关问题
来源:互联网 发布:mac搜狗五笔无法使用 编辑:程序博客网 时间:2024/06/09 23:20
字节顺序 endian
计算机系统一般采用字节(Octet,8 bit )作为逻辑寻址单位。当物理单位的长度大于1个字节时,就要区分字节顺序。常见的字节顺序有两种:大端Big Endian 和 小端 Little Endian。
大端序:高位字节放到内存的低地址端,低位字节排放在内存的高地址段; 小端序:低位字节存放在内存的低地址段,高位字节排放在内存的高地址段。
判断大端小段(C++):
栈地址的申请是由高到低的!!!
const int endian = 1;#define is_bigendian() ((*(char*)&endian) == 0)#define is_littlendian() ((*(char*)&endian) == 1)bool IsLittleEndian(){ union{ int val; char c;}u; u.val = 1; if(u.c == 1) {//小端return true; } else {//大端return false; }}
网络字节序(Network Byte Order,NBO)
按照从高到低的顺序存储,在网路上使用统一的网络字节顺序,可以避免兼容性问题。(即为大端序,TCP/IP中使用的字节序)。
主机字节序(HBO ,Host Byte Order)
不同的机器HBO不相同,与CPU设计有关。不同机器之间通信,需要转换为网络字节序来通信。相关转换函数如下:
htonl():将主机字节顺序转化为32位网络字节顺序
ntohl():将网络字节顺序转换为32位主机字节顺序
htons():将一个16位数从主机字节顺序转化为网络字节顺序
ntohs():将一个无符号端整型数从网络字节顺序转换为主机字节顺序
inet_ntoa():将网络地址转换成"."点隔的字符串格式,返回一个字符指针
inet_addr():将IP从点数格式转换成无符号长整型(错误返回-1,与IP地址255.255.255.255相符合)
0 0
- 字节序相关问题
- 网络字节序相关问题
- 请问一个关于网络字节序的相关问题!
- 字节相关
- 字节序问题
- 字节序的问题
- 字节序问题
- 字节序问题
- 字节序问题
- 字节序问题
- 字节序的问题
- 字节序问题
- 字节序问题
- 字节序问题
- 字节序的问题
- 字节序问题
- 字节序问题
- 网络字节序问题
- c# 子线程内访问、修改主线程的控件值
- View and Data增加或删除菜单按钮
- offload 优化技术-浅谈
- 通过Oracle Golden Gate 进行Oracle到SQL Server的同步
- eclipse or intellij idea 清除svn标示
- 字节序相关问题
- 常用组件
- Tail Recursion 尾递归
- 垃圾回收算法之分代回收算法
- 行列式(determinant)的物理意义及性质
- iOS应用内支付(内购)
- "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));
- STM8S单片机串口调试
- golang--自动下载邮件的附件