判断主机字节序
2014-05-08 21:55
190 查看
在socket网络编程中,要遇到处理字节序的问题,在网络中数据一般是以大端字节序来传送的,而我们使用的主机则有的是大端格式来存数数据,有的则是小端格式。Intel系列的处理器一般使用的是小端字节序,但是有的主机是使用大端字节序。因此在不知道自己主机的字节序时,可以通过编程测试主机的字节序。
这里顺便把TCP/IP应用程序中提供的四个通用函数以处理主机字节序和网络字节序之间的转换列出
#include <stdio.h> int main(int argc, char *argv[]) { union { short s; char c[sizeof(short)]; }un; un.s = 0x0102; if( sizeof(short) == 2 ) { if( un.c[0] == 1 && un.c[1] == 2 ) { printf("big-endian\n"); } else if( un.c[0] == 2 && un.c[1] == 1 ) { printf("little-endian\n"); } else { printf("sizeof(short) = %d\n", sizeof(short)); } } printf("Press enter to continue ..."); getchar(); return 0; }
这里顺便把TCP/IP应用程序中提供的四个通用函数以处理主机字节序和网络字节序之间的转换列出
#include <arpa/inet.h> uint32_t htonl(uint32_t hostint32);//返回值:以网络字节序表示的32位整型数 uint16_t htons(uint16_t hostint16);//返回值:以网络字节序表示的16位整型数 uint32_t ntohl(uint32_t netint32); //返回值:以主机字节序表示的32为整型数 uint16_t ntohs(uint16_t netint16); //返回值:以主机字节序表示的16位整型数
相关文章推荐
- Python实现简单的HTTP服务器
- Python实现简单的HTTP服务器
- Python实现简单的HTTP服务器
- 学习从晚上十点开始
- 23种设计模式(1):单例模式
- 命令模式
- leetcode第一刷_Symmetric Tree
- 信鸽邮件营销专家好用吗?
- 经典分享MySQL的limit查询优化
- 关于不同屏幕加载不同的布局文件的做法
- Oracle高效SQL
- 专家博客一览
- 车票100–火车票接口开发文档
- 2014第19周四开发记
- mysql 去除重复 Select中DISTINCT关键字的用法
- 设计模式中类的关系
- byte,short,int和long有符号整数
- CentOS6.4 + OpenCV2.3.1 + ffmpeg0.8 + Codeblocks
- javascript四则运算
- 对于Node.js开发者的7点建议