美文网首页
iOS 16进制字串与字符串相互转换

iOS 16进制字串与字符串相互转换

作者: 浅_若清风 | 来源:发表于2021-08-15 16:24 被阅读0次
一.16进制字串转字符串

创建一个model类来创建方法

//model.h文件中实现
void HexToStr(char *szDest, unsigned char *pbSrc, unsigned int dwLen);
//model.m文件中实现
void HexToStr(char *szDest, unsigned char *pbSrc, unsigned int dwLen)
{
    if (szDest == nil || pbSrc == nil || dwLen == 0)
    {
        return;
    }
    char    ddl,ddh;
    for (int i=0; i<dwLen; i++)
    {
        ddh = 48 + pbSrc[i] / 16;
        ddl = 48 + pbSrc[i] % 16;
        if (ddh > 57)  ddh = ddh + 7;
        if (ddl > 57)  ddl = ddl + 7;
        szDest[i*2] = ddh;
        szDest[i*2+1] = ddl;
    }
    szDest[dwLen*2] = '\0';
}
//调用
HexToStr(destStr, pdStr, jsonLen);

代码中szDest为存放目标字符串,pbSrc为输入16进制数对应字串的起始地址,dwLen 为16进制数的字节数。

二.字符串转化为16进制数
//model.h文件中实现
void StrToHex(unsigned char *pbDest, char *szSrc, unsigned int dwLen);
//model.m文件中实现
//将字符串转化为16进制数
void StrToHex(unsigned char *pbDest, char *szSrc, unsigned int dwLen)
{
    char h1,h2;
    unsigned char s1,s2;
    for (int i=0; i<dwLen; i++)
    {
        h1 = szSrc[2*i];
        h2 = szSrc[2*i+1];
        s1 = toupper(h1) - 0x30;
        if (s1 > 9)
            s1 -= 7;
        s2 = toupper(h2) - 0x30;
        if (s2 > 9)
            s2 -= 7;
        pbDest[i] = s1*16 + s2;
    }
}
//调用
StrToHex((unsigned char *)myStr, tmpString, (unsigned int)length/2);

代码中szDest为输出缓冲区,pbSrc为字符串,dwLen 为16进制数的字节数(字符串的长度/2)。

相关文章

网友评论

      本文标题:iOS 16进制字串与字符串相互转换

      本文链接:https://www.haomeiwen.com/subject/mazdbltx.html