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

来源:互联网 发布:幸运双色球过滤软件 编辑:程序博客网 时间:2024/06/05 02:49
//字节流转换为十六进制字符串  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;elsedest[i * 2] = highByte;lowByte += 0x30;if (lowByte > 0x39)dest[i * 2 + 1] = lowByte + 0x07;elsedest[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;}

//string实现方法字节流转十六进制字符串std::string ToHexString(const UCHAR* buf, int len, std::string tok/* = " "*/){std::string output;char temp[8];for (int i = 0; i < len; ++i){sprintf(temp, "%.2x", (UCHAR)buf[i]);output.append(temp);if (i < len -1){output.append(tok);}}return output;}


//十六进制字符串转换为字节流  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;elsehighByte -= 0x30;if (lowByte > 0x39)lowByte -= 0x37;elselowByte -= 0x30;dest[i / 2] = (highByte << 4) | lowByte;}return;}


0 0