C语言实现字节流与十六进制字符串的相互转换

来源:互联网 发布:农村淘宝网店申请报名 编辑:程序博客网 时间:2024/05/29 19:51

原文出自:http://blog.csdn.net/qq387732471/article/details/7360988

void ByteToHexStr(const unsigned char* source, char* dest, int sourceLen)  {      short i;      unsigned char highByte, lowByte;        for (i = 0; i < sourceLen; i++)      {          highByte = source[i] >> 4;          lowByte = source[i] & 0x0f ;            highByte += 0x30;            if (highByte > 0x39)                  dest[i * 2] = highByte + 0x07;          else                  dest[i * 2] = highByte;            lowByte += 0x30;          if (lowByte > 0x39)              dest[i * 2 + 1] = lowByte + 0x07;          else              dest[i * 2 + 1] = lowByte;      }      return ;  }    //字节流转换为十六进制字符串的另一种实现方式  void Hex2Str( const char *sSrc,  char *sDest, int nSrcLen )  {      int  i;      char szTmp[3];        for( i = 0; i < nSrcLen; i++ )      {          sprintf( szTmp, "%02X", (unsigned char) sSrc[i] );          memcpy( &sDest[i * 2], szTmp, 2 );      }      return ;  }    //十六进制字符串转换为字节流  void HexStrToByte(const char* source, unsigned char* dest, int sourceLen)  {      short i;      unsigned char highByte, lowByte;            for (i = 0; i < sourceLen; i += 2)      {          highByte = toupper(source[i]);          lowByte  = toupper(source[i + 1]);            if (highByte > 0x39)              highByte -= 0x37;          else              highByte -= 0x30;            if (lowByte > 0x39)              lowByte -= 0x37;          else              lowByte -= 0x30;            dest[i / 2] = (highByte << 4) | lowByte;      }      return ;  }  


阅读全文
0 0
原创粉丝点击