socket编程必备函数:字节序转换C++模板函数,一劳永逸地代替ntoh或hton等函数
来源:互联网 发布:微课软件下载 编辑:程序博客网 时间:2024/06/06 15:02
socket编程必备函数:贡献一个使用C++模板写的字节序转换函数,一劳永逸地代替ntoh或hton等函数,而且还不用管整形的长度,想怎么用就怎么用,不会用错。
这么好的东西是不是可以考虑将这个函数纳入C++标准库啊?
//判断是否大端字节序
bool IsBigEndianOrder()
{
int iVal = 1;
char *pChar = (char*)(&iVal);
if(*pChar==1) return false; //(0x01000000) Windows 采用的是小端法
else return true; //(0x00000001) Aix采用的是大端法
}
//在本机字节序与网络字节序之间转换,正反都是使用该同一个函数
template<class IntType> IntType ntoh_or_hton(IntType nValue)
{
IntType iResult = 0;
int iIntTypeSize = sizeof(IntType); //整形的长度
unsigned char* psInput = (unsigned char*)&nValue;
unsigned char* psResult = (unsigned char*)&iResult;
if(!IsBigEndianOrder()) //需要转换
{
for(int i=0; i<iIntTypeSize; ++i)
{
psResult[iIntTypeSize-1-i] = psInput[i];
}
return iResult;
}
else //不需要转换
{
return nValue;
}
}
这么好的东西是不是可以考虑将这个函数纳入C++标准库啊?
//判断是否大端字节序
bool IsBigEndianOrder()
{
int iVal = 1;
char *pChar = (char*)(&iVal);
if(*pChar==1) return false; //(0x01000000) Windows 采用的是小端法
else return true; //(0x00000001) Aix采用的是大端法
}
//在本机字节序与网络字节序之间转换,正反都是使用该同一个函数
template<class IntType> IntType ntoh_or_hton(IntType nValue)
{
IntType iResult = 0;
int iIntTypeSize = sizeof(IntType); //整形的长度
unsigned char* psInput = (unsigned char*)&nValue;
unsigned char* psResult = (unsigned char*)&iResult;
if(!IsBigEndianOrder()) //需要转换
{
for(int i=0; i<iIntTypeSize; ++i)
{
psResult[iIntTypeSize-1-i] = psInput[i];
}
return iResult;
}
else //不需要转换
{
return nValue;
}
}
阅读全文
0 0
- socket编程必备函数:字节序转换C++模板函数,一劳永逸地代替ntoh或hton等函数
- 1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client
- 1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client
- linux网络编程之socket(一):socket概述和字节序、地址转换函数
- linux网络编程之socket(一):socket概述和字节序、地址转换函数
- linux网络编程之socket(一):socket概述和字节序、地址转换函数
- linux网络编程之socket(一):socket概述和字节序、地址转换函数
- Linux网络编程之socket:socket与字节序以及地址转换函数
- linux网络编程之socket(一):socket概述和字节序、地址转换函数
- linux网络编程之socket(一):socket概述和字节序、地址转换函数
- linux网络编程之socket(一):socket概述和字节序、地址转换函数
- linux网络编程之socket(一):socket概述和字节序、地址转换函数
- socket编程相关的结构体和字节序转换、IP、PORT转换函数
- 字节序转换函数
- 字节序转换函数
- 字节序转换函数
- 关于网络传输字节顺序的问题: hton? or ntoh?-
- 关于网络传输字节顺序的问题: hton? or ntoh?
- linux 下安装 elasticsearch 1.7.1
- Spark连接HBase进行读写相关操作【CDH5.7.X】
- 数据仓库学习笔记二
- 数据库面试的常见问题
- New Beginning
- socket编程必备函数:字节序转换C++模板函数,一劳永逸地代替ntoh或hton等函数
- 习题4(4.1)3
- 数据结构中常见的树
- 转载:为什么很多人觉得RNG输了LPL就亡了?青春就落幕了?
- Python2.7 中的整除和幂运算
- 深度学习装机、系统、环境配置指南--预算15000
- Linux走过的坑(持续更新)
- 部落冲突
- bzoj4264 小C找朋友