C语言实现字节流与十六进制字符串的相互转换
//字节流转换为十六进制字符串
//(例如:char数组中原先存储的{0x2e},转换之后变成了char数组中存储的{0x32,0x65})
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;
}
//十六进制字符串转换为字节流
//(例如:char数组中原先存储的{0x32,0x65},转换之后变成了char数组中存储的{0x2e})
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;
}
还没有评论,来说两句吧...