• 大小: 1KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: C/C++
  • 标签:

资源简介

资源为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


评论

共有 条评论

相关资源