资源简介
资源为32位机下高低位字节交换类,适用于c++语法下的环境,一般跨平台通讯程序时,涉及主机字节不一致情况,如Linux下的服务程序和windows下客户端程序通讯时,有可能需要做主机字节高低位交换,本类提供int、float、short、double、long型数据的字节交换处理并提供判断是否需要交换的接口函数,希望有此需要的童鞋不必再浪费时间写,直接使用!
代码片段和文件信息
// SwapBites.cpp: implementation of the CSwapBites class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “SwapBites.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CSwapBites::CSwapBites()
{
}
CSwapBites::~CSwapBites()
{
}
/* byte sequence: 1234 => 4321
*/
int CSwapBites::Int_Bswap(int value)
{
union {
int ii;
char cc[4];
}swap;
char temp;
swap.ii = value;
temp = swap.cc[0];
swap.cc[0] = swap.cc[3];
swap.cc[3] = temp;
temp = swap.cc[1];
swap.cc[1] = swap.cc[2];
swap.cc[2] = temp;
return (swap.ii);
}
/* byte sequence: 12 => 21
*/
short CSwapBites::Short_Bswap(short value)
{
union {
short ss;
char cc[2];
}swap;
char temp;
swap.ss = value;
temp = swap.cc[0];
swap.cc[0] = swap.cc[1];
swap.cc[1] = temp;
return (swap.ss);
}
/* byte sequence: 1234 => 4321
*/
long CSwapBites::Long_Bswap(long value)
{
union {
long ll;
char cc[4];
}swap;
char temp;
swap.ll = value;
temp = swap.cc[0];
swap.cc[0] = swap.cc[3];
swap.cc[3] = temp;
temp = swap.cc[1];
swap.cc[1] = swap.cc[2];
swap.cc[2] = temp;
return (swap.ll);
}
/* byte sequence: 1234 => 4321
*/
float CSwapBites::Float_Bswap(float value)
{
union {
float ff;
char cc[4];
}swap;
char temp;
swap.ff = value;
temp = swap.cc[0];
swap.cc[0] = swap.cc[3];
swap.cc[3] = temp;
temp = swap.cc[1];
swap.cc[1] = swap.cc[2];
swap.cc[2] = temp;
return (swap.ff);
}
/* byte sequence: 12345678 => 87654321
*/
double CSwapBites::Double_Bswap(double value)
{
union {
double dd;
char cc[8];
}swap;
char temp;
swap.dd = value;
temp = swap.cc[0];
swap.cc[0] = swap.cc[7];
swap.cc[7] = temp;
temp = swap.cc[1];
swap.cc[1] = swap.cc[6];
swap.cc[6] = temp;
temp = swap.cc[2];
swap.cc[2] = swap.cc[5];
swap.cc[5] = temp;
temp = swap.cc[3];
swap.cc[3] = swap.cc[4];
swap.cc[4] = temp;
return (swap.dd);
}
/*
*判断主机字节与网络字节高地位顺序是否一致,
*return TRUE--一致,FALSE---不一致
*/
int CSwapBites::IsHostNetByteSame()
{
int tag = 99;
if (tag==ntohl(tag))
{
return TRUE;
}
else
{
return FALSE;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 623 2011-02-25 09:18 SwapBites.h
文件 2573 2011-07-12 14:02 SwapBites.cpp
----------- --------- ---------- ----- ----
3196 2
- 上一篇:C++语言编程病人就医管理系统
- 下一篇:平差课程设计
评论
共有 条评论