[C语言] 16进制整数转字符串

[C语言] 16进制整数转字符串字符串其实就是上述 ASCII 表中的图形栏内容 转换成 hex 即变成对应的十六进制数

大家好,欢迎来到IT知识分享网。

在这里插入图片描述

一、字符串转ASCII

字符串其实就是上述ASCII表中的图形栏内容,转换成hex,即变成对应的十六进制数。通常以0123456789ABCDEF,进行转换。找规律:字符 ‘0’ 对应0x30 字符 ‘1’ 对应0x31 字符‘A’ 对应0x41 字符 ‘a’对应 0x61 等这些都是简单,早就知道的。换成C语言则可以这样写:

‘0~9‘ + 0x30

‘A~F’ – ‘A’+10

‘a~f’ – ‘a’+10

void str_to_acsll(uint8_t  *s_inchar, uint8_t s_len, uint8_t  *a_outtxt)
{ 
     

    uint8_t size1=0,i=0;
         for( size1=0;size1<s_len; size1++)
        { 
     
            
            if(    s_inchar[size1]>='0' && s_inchar[size1] <= '9')
            { 
     
                a_outtxt[size1] = s_inchar[size1] - 0x30;
            }
            else if(    s_inchar[size1]>='A' && s_inchar[size1] <= 'F')
            { 
     
                a_outtxt[size1] = s_inchar[size1] - 'A'+10;
            }
            else if(    s_inchar[size1]>='a' && s_inchar[size1] <= 'f')
            { 
     
                a_outtxt[size1] = s_inchar[size1] - 'a'+10;
            }

        }
     for( size1=0,i=0;size1<=s_len; size1++,i++)
     { 
     
            a_outtxt[i]=(a_outtxt[size1]<<4)|a_outtxt[++size1];            
     }
      a_outtxt[i] = '\0'; 
}


二、字符串转hex

这个是用于把字符串占两个字节的,合成为一个hex使用。比如:“FF” -> 0xff 字符串占用的是两个字节的数其实是一个hex的,那么就要位移合成。

uint16_t stringtohex(uint8_t *buf, uint8_t * format, uint16_t us_length)
{ 
     
    uint8_t tempcode;
    uint16_t uslength = us_length * 2,us_count = 0,us_data;

    for(us_data = 0;us_count < uslength; us_count += 2,us_data++)
    { 
     
        tempcode = format[us_data] >> 4;

        if(tempcode <= 9)
        { 
     
            buf[us_count] = tempcode + '0';
        }
        else
        { 
     
            buf[us_count] = tempcode - 10 + 'A';
        }
        tempcode = format[us_data] & 0X0F;
        if(tempcode <= 9)
        { 
     
            buf[us_count+1] = tempcode + '0';
        }
        else
        { 
     
            buf[us_count+1] = tempcode - 0X0A + 'A';
        }
    }
    buf[uslength] = '\0';
    return uslength;
}


三、16进制整数转字符串

static void hex_to_str(uint8_t *source, uint32_t len, uint8_t *target)
{ 
     
    uint8_t ddl, ddh;
    uint32_t i;

    for (i = 0; i < len; i++)
    { 
     
        ddh = ('0' + source[i] / 16);
        ddl = ('0' + source[i] % 16);

        if (ddh > '9')
            ddh = (ddh + ('a' - '9' - 1));
        if (ddl > '9')
            ddl = (ddl + ('a' - '9' - 1));

        target[i * 2] = ddh;
        target[i * 2 + 1] = ddl;
    }
    target[len] = '\0';
}


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/112236.html

(0)
上一篇 2026-01-19 19:33
下一篇 2026-01-19 20:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信