c++中16进制与10进制的转化

我用unsigned char定义了一个变量,然后给他赋值为16进制数,现在想把这个变量转化为10进制,仍然是unsigned char类型的,请问各位大佬应该怎么做呀? unsigned char s=0x1c;//这种类型的转化为10进制

用 %x就可以转换。


#include <stdio.h>
#include <stdlib.h>

int length(char a[]);    //因为函数位于main()函数之后,所以当引用这个函数时应该首先进行声明便于之后的引用

int main(void)
{
    char a[] = { 'a', 'b', 'c', 'd', 'f' };
    int i;
    int j = 1515870810;
    printf("%x\n", j);  //输出结果为:    2f
    printf("%X\n", j);  //输出结果为:    2F
    printf("%#x\n", j); //输出结果为:    0x2f
    printf("%#X\n", j); //输出结果为:    0X2F    %#X推荐使用
    for (i = 0; i < length(a); i++)
    {
        printf("%d\n", a[i]);
    }
    return 0;
}

int length(char a[])
{
    int value;
    value = sizeof(a) / sizeof(a[0]);
    return value;
}

 

#include <stdio.h>
#include <string.h>

/* 十六进制数转换为十进制数 */
long hexToDec(char *source); 

/* 返回ch字符在sign数组中的序号 */
int getIndexOfSigns(char ch);

int main()
{
    char *hex = "75BCD15";

    printf("16进制数:\t%s\n", hex);
    printf("10进制数:\t%ld\n", hexToDec(hex));
    return 0;
}

/* 十六进制数转换为十进制数 */
long hexToDec(char *source)
{
    long sum = 0;
    long t = 1;
    int i, len;

    len = strlen(source);
    for(i=len-1; i>=0; i--)
    {
        sum += t * getIndexOfSigns(*(source + i));    //从低位开始,getIndexOfSigns函数返回其中一位字符对应的十进制数
        t *= 16;
    }  
    return sum;
} 

/* 返回ch字符在sign数组中的序号 */
int getIndexOfSigns(char ch)
{
    if(ch >= '0' && ch <= '9')
    {
        return ch - '0';
    }
    if(ch >= 'A' && ch <='F') 
    {
        return ch - 'A' + 10;
    }
    if(ch >= 'a' && ch <= 'f')
    {
        return ch - 'a' + 10;
    }
    return -1;
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632