c语⾔byte转字符串,C语⾔实现字节流与⼗六进制字符串的相
互转换
在调试串⼝经常碰到需要把读出来的hex data转化成string类型输出,记录下来
//字节流转换为⼗六进制字符串
//itoa,16进制变字符串,1字节变两字节
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++ )
{
c++string类型sprintf( szTmp, "%02X", (unsigned char) sSrc[i] );
memcpy( &sDest[i * 2], szTmp, 2 );
}
return ;
}
//⼗六进制字符串转换为字节流
//atoi,2个字符串字符变⼀个⼗六进制字节
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 ;
}
int main()
{
//char data[] = {0xFF,0x26,0xA0,0x0B,0xFF};
char data[] = "FF26A00BFF12";
char buffer[100];
char i=0;
memset(buffer, 0, sizeof(buffer));
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论