简单题目:给出一个整数,转换为16进制的字符

   日期:2020-09-08     浏览:86    评论:0    
核心提示:一 题目给出一个整数,转换成16进制的字符输出。二 问题分析利用进制转换方法:用按权展开法。然后,1500的十六进制转换结果为:5DC三 代码3.1 C实现char * convertToBase16(int num){ if (!num) { return 0; } char * retstr = (char *)malloc(12*sizeof(char)); // 分配存放区域 memset(retstr, 0, 12

一 题目

给出一个整数,转换成16进制的字符输出。

二 问题分析

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


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

三 代码

3.1 C实现

char * convertToBase16(int num)
{
    if (!num)
    {
        return "0";
    }

    char * retstr = (char *)malloc(12*sizeof(char)); // 分配存放区域
    memset(retstr, '0', 12*sizeof(char));

    if (num < 0)
    {
        strcat(retstr, "-");
        num = -num;
    }

    char arr[12];
    memset(arr, 0, 12*sizeof(char));
    int i = 0;
    while (num > 0)
    {
        arr[i] = (char)(num % 16 + '0');
        num = num / 16;
        i++;
    }

    i--;

    for ( ; i >= 0; i--)
    {
        strncat(retstr, arr+i, 1);
    }
    
    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++实现

string convertToBase16(int num)
{
    string s;

    // boundary
    if (!num)
        return "0";

    int flag = 0;
    if (num < 0)
    {
        flag = 1;
        num = -num;
    }
    char reset;

    while (num > 0)
    {
        reset = char(num % 16) + '0';
        num = num / 16;
        s = reset + s; //后得到的,写在前面,进制转换的计算方法
    }

    if (flag)
        s = '-' + s;
    
    return s;
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服