/***********************************************************************
C prototype : void StrToHex(__u8 *ucpDest, __u8 *ucpSrc, __u16 usLen)
parameter(s): [OUT] ucpDest - 输出缓冲区
[IN] ucpSrc - 字符串
[IN] usLen - 16进制数的字节数(字符串的长度/2)
return value:
remarks : 将字符串转化为16进制数
************************************************************************/
void StrToHex(__u8 *ucpSrc, int usLen, __u8 *ucpDest, int udLen)
{
__u8 s1,s2;
__u16 i, len;
len = usLen > udLen ? udLen : usLen;
for (i = 0; i < len; i++)
{
s1 = toupper(ucpSrc[2 * i]) - 0x30;
if (s1 > 9)
s1 -= 7;
s2 = toupper(ucpSrc[2 * i+1]) - 0x30;
if (s2 > 9)
s2 -= 7;
ucpDest[i] = s1 * 16 + s2;
}
return;
}
/***********************************************************************
C prototype : void HexToStr(__u8 *ucpDest, __u8 *ucpSrc, int usLen)
parameter(s): [OUT] ucpDest - 存放目标字符串
[IN] ucpSrc - 输入16进制数的起始地址
[IN] usLen - 16进制数的字节数
return value:
remarks : 将16进制数转化为字符串
************************************************************************/
void HexToStr(__u8 *ucpSrc, int usLen, __u8 *ucpDest, int udLen)
{
__u8 ddl,ddh;
__u16 i;
len = usLen > udLen / 2 ? udLen / 2 : usLen;
for (i = 0; i < len; i++)
{
ddh = 48 + ucpSrc[i] / 16;
ddl = 48 + ucpSrc[i] % 16;
if (ddh > 57)
{
ddh = ddh + 7;
}
if (ddl > 57)
{
ddl = ddl + 7;
}
ucpDest[i * 2] = ddh;
ucpDest[i * 2 + 1] = ddl;
}
ucpDest[len * 2] = '\0';
return;
}
十六进制与字符串互转实现c语言
最新推荐文章于 2023-11-17 15:20:26 发布