大米CMS官网论坛,大米站长联盟,大米站长之家,大米开发者社区
标题:
c二进制与16进制互相转换
[打印本页]
作者:
追影
时间:
2018-10-11 09:33
标题:
c二进制与16进制互相转换
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;
}
复制代码
欢迎光临 大米CMS官网论坛,大米站长联盟,大米站长之家,大米开发者社区 (https://www.damicms.com/bbs/)
Powered by Discuz! X3.1