查看: 82|回复: 1

C语言 | 字符串转16进制

[复制链接]

2

主题

8

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2022-12-9 21:32:53 | 显示全部楼层 |阅读模式
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
void toHex(char c, char *chigh, char *clow)
{
        char high = (c >> 4) & 0x0F, low = c & 0x0F;
        high = high < 10 ? high + '0' : high + 'A' - 10;
        low = low < 10 ? low + '0' : low + 'A' - 10;
        *chigh = high;
        *clow = low;
}

void cmd_conversion(char *cmd_in, char *cmd_out)
{
    int           i            = 0;
    int           j            = 0;
    int           nTmpBufLen   = 0;
    char          high         = 0;
    char          low          = 0;

    for(i = 0; i < strlen(cmd_in); i++)
        {
                toHex(cmd_in,&high, &low);
                if('A' <= high && high <='Z')
                {
                        snprintf(&cmd_out[j++], sizeof(cmd_out), "%c", high+32);
                }
                else
                {
                        snprintf(&cmd_out[j++], sizeof(cmd_out), "%c", high);
                }
                if('A' <= low && low <='Z')
                {
                        snprintf(&cmd_out[j++], sizeof(cmd_out), "%c", low+32);
                }
                else
                {
                        snprintf(&cmd_out[j++], sizeof(cmd_out), "%c", low);
                }       
               
                if (i < strlen(cmd_in)-1)
                {
                        cmd_out[j++] = ' ';
                }
               
        }
       
    return ;

}
int main()
{
    int i = 0;
    char cStr_in[64] = "香蕉草莓牛奶哈密瓜";//输入字符串
    char cStr_out[128] = { 0 };//输出字符串
    cmd_conversion(cStr_in, cStr_out);
    printf("%s\n", cStr_out);

    return 0;
}
执行结果:

回复

使用道具 举报

3

主题

14

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 5 天前 | 显示全部楼层
求沙发
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表