字节序问题
来源:互联网 发布:php api接口开发实例 编辑:程序博客网 时间:2024/06/14 01:40
字节序由处理器决定,它分为两大阵营,一方以Intel为代表,其处理器的字节序是小尾端模式,即低地址存储数据的低位部分,高地址存储数据的高位部分;另一方以IBM为代表,其处理器的字节序是大尾端模式,即低地址存储数据的高位部分,高地址存储数据的低位部分。可用以下的简单代码测试CPU的大小端,小段输出0x78,大端0x12
#include <stdio.h>int main(){ int i = 0x12345678; char *p = &i; printf("%x\n", p); return 0;}
结构体的位域成员变量
为了节省空间,如果结构体有几个成员变量的取值范围很小,那么可以考虑将它们合并在一个字节里或一个short、int变量里。使用一个类型超过一个字节的变量时,需要考虑字节序,那么在结构体中使用位域时,需不需要考虑bit序呢?即一个整形变量内包含多个位域变量,各变量的bit顺序是不是固定的呢?通过测试发现,各CPU体系结构的位域bit序跟其字节序大小端是一致的。
网络字节序
TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节。如果主机是小端字节序,发送和接受都需要做转换。同理,32位的IP地址也要考虑网络字节序和主机字节序的问题。
可用以下库函数做网络字节序和主机字节序的转换,使网络程序可移植:
#include <arpa/inet.h>uint32_t htonl(uint32_t hostlong);uint16_t htons(uint16_t hostshort);uint32_t ntohl(uint32_t netlong);uint16_t ntohs(uint16_t netshort);
0 0
- 字节序问题
- 字节序的问题
- 字节序问题
- 字节序问题
- 字节序问题
- 字节序问题
- 字节序的问题
- 字节序问题
- 字节序问题
- 字节序问题
- 字节序的问题
- 字节序问题
- 字节序问题
- 网络字节序问题
- 大小字节序问题
- 字节序问题
- 字节序转换问题
- brew: 字节序问题
- 红黑树-Java版
- C库函数使用与总结之时间函数
- C库函数使用与总结之字符串处理函数
- 黑马程序员——Java之集合
- 算法基础之排序
- 字节序问题
- Source Insight常用功能设置
- TCP协议
- ajax缓存问题
- 使用GDB调试程序
- 深入理解进程间通信之共享内存
- 深入理解进程间通信之消息队列
- 深入理解进程间通信之信号
- vi(vim)键盘图及其基本命令