最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 服务器 > 系统运维 >
整数与16进制字符之间的转换方式
CSDN发表于 2020-09-09 17:24 次浏览

如何将整数转换成16进制字符?下面文章给大家详细解说一下:

一 问题分析

利用进制转换方法:用按权展开法。


然后,1500的十六进制转换结果为:5DC

二 代码

3.1 C实现

1·char * convertToBase16(int num)
2·{
3·    if (!num)
4·    {
5·        return "0";
6·    }
7·
8·   char * retstr = (char *)malloc(12*sizeof(char)); // 分配存放区域
9·    memset(retstr, '0', 12*sizeof(char));1011121314151617
10·
11·    if (num < 0)
12·    {
13·        strcat(retstr, "-");
14·        num = -num;
15·    }
16·
17·    char arr[12];
18·    memset(arr, 0, 12*sizeof(char));
19·    int i = 0;
20·    while (num > 0)
21·    {
22·        arr[i] = (char)(num % 16 + '0');
23·        num = num / 16;
24·        i++;
25·    
26·}
27·
28·    i--;
29·
30·    for ( ; i >= 0; i--)
31·    {
32        strncat(retstr, arr+i, 1);
33    }
34    
35    return retstr;    
}

Tips:

void memset(void * str, int c, size_t n); 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前n个字符

char * strcat(char * dest, const char * src); 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾

char *strncat(char *dest, const char *src, size_t n) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾,直到 n 字符长度为止。

3.2 C++实现

1·string convertToBase16(int num)
2·{
3·    string s;
4·
5·    // boundary
6·    if (!num)
7·        return "0";
8·
9·    int flag = 0;
10·    if (num < 0)
11·    {
12·        flag = 1;
13·        num = -num;
14·    }
15·    char reset;
16·
17·   while (num > 0)
18·    {
19·        reset = char(num % 16) + '0';
20·        num = num / 16;
21·        s = reset + s; //后得到的,写在前面,进制转换的计算方法
22·    }
23·
24·    if (flag)
25·        s = '-' + s;
26·    
27·
28·    return s;
29·}
标签:16进制转换
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐