各种数据转换

来源:互联网 发布:js判断div是否隐藏 编辑:程序博客网 时间:2024/06/06 16:18


//全局工具函数


/*
* 函数介绍:int转BYTE*
* 输入参数:整数number,整数占字节大小
* 输出参数:转换后的BYTE*
* 返回值  :void
*/
void gf_intToBytes(const int number,BYTE* pBYTE,int size = 4)
{
 memset(pBYTE, 0, sizeof(BYTE) * size);
 pBYTE[0] = (BYTE) (0xff & number);
 pBYTE[1] = (BYTE) ((0xff00 & number) >> 8);
 pBYTE[2] = (BYTE) ((0xff0000 & number) >> 16);
 pBYTE[3] = (BYTE) ((0xff000000 & number) >> 24);
 return ;
}
/*
* 函数介绍:BYTE*转int
* 输入参数:BYTE*
* 输出参数:
* 返回值  :整形num
*/
int gf_bytesToInt(const BYTE* pBYTE)
{
 if(pBYTE == NULL)
  return -1;
 int number = pBYTE[0] & 0xFF;
 number |= ((pBYTE[1] << 8) & 0xFF00);
 number |= ((pBYTE[2] << 16) & 0xFF0000);
 number |= ((pBYTE[3] << 24) & 0xFF000000);
 return number;
}

/*
* 函数介绍:char*转BYTE*
* 输入参数:字符串char*
* 输出参数:转换后的BYTE*
* 返回值  :void
*/
void gf_StringToBytes(const char* str, BYTE* pBYTE)
{
 if(str ==NULL || pBYTE == NULL)
  return ;
 int iLen = 0;
 iLen = strlen(str);
 for(int i=0,j=0; i<iLen-1; i+=2,++j)
 {
  int l_iTemp = 0;
  char l_chTemp[2];
  l_chTemp[0] = str[i];
  l_chTemp[1] = str[i+1];
  l_iTemp = gf_CharToInt(l_chTemp);
  pBYTE[j] =l_iTemp;
 }
 return ;
}
/*
* 函数介绍:BYTE*转char*
* 输入参数:BYTE*,pBytes长度
* 输出参数:转换后的char*
* 返回值  :void
*/
void gf_BytesToString(BYTE* pBytes, int len, char* pStr)
{
 if(pBytes == NULL || pStr == NULL)
  return ;
 for(int i=0; i<len; i++)
 {
  pStr[i] = (char)(pBytes[i] & 0xff);
 }
}

/*
* 函数介绍:两位char转int
* 输入参数:字符串char
* 输出参数:
* 返回值  :转换后int
*/
int gf_CharToInt(char str[2])
{
 if(str == NULL)
  return -1;

 int left = 0;
 int right = 0;
 if (str[0]>='0' && str[0]<='9')
  left = str[0]-'0';
 else if(str[0]>='a' && str[0]<='f')
  left = str[0]-'a'+10;
 else if(str[0]>='A' && str[0]<='F')
  left = str[0]-'A'+10;
 else
  return -1;
 if (str[1]>='0' && str[1]<='9')
  right = str[1]-'0';
 else if(str[1]>='a' && str[1]<='f')
  right = str[1]-'a'+10;
 else if(str[1]>='A' && str[1]<='F')
  right = str[1]-'A'+10;
 else
  return -1;
 return left*16+right;
}
/*
* 函数介绍:八位char*转BYTE
* 输入参数:字符串char*
* 输出参数:
* 返回值  :转换后BYTE
*/
BYTE gf_CharsToByte(char* chStr, int length)
{
 BYTE bySum = 0;
 for(int i=length-1; i>=0; i--)
 {
  if(chStr[i] == '1')
  {
   int iTemp = length - i - 1;
   bySum += pow(2.0, iTemp);
  }
 }
 return bySum;
}

/*
* 函数介绍:拷贝BYTE*
* 输入参数:源BYTE*,起始位置,拷贝长度
* 输出参数:目的BYTE*
* 返回值  :TRUE/FALSE
*/
BOOL gf_BytesNCopy(const BYTE* source, int start, int len, BYTE* des)
{
 if(start < 0 || len < 0 || source == NULL)
 {
  return FALSE;
 }
 int end = start + len;
 for(int i=start,j=0; i<end; ++i,++j)
 {
  des[j] = source[i];
 }

 return TRUE;
}

/*
* 函数介绍:int转BCD
* 输入参数:int,整型占字节长度
* 输出参数:目的BYTE*
* 返回值  :TRUE/FALSE
*/
BOOL gf_DecToBCD(int Dec, BYTE *Bcd, int length)
{
 int tmp;

 for(int i = length - 1; i >= 0; i--)
 {
  tmp = Dec % 100;
  Bcd[i] = ((tmp / 10) << 4) + ((tmp % 10) & 0x0F);
  Dec /= 100;
 }

 return TRUE;
}


0 0
原创粉丝点击