C语言如何实现十六进制0x123转为十进制123?

C语言如何实现十六进制0x123转为十进制123?

是不是这样

#include <stdio.h>

void main()
{
    int n = 0x123;
    printf("%x",n);

}

或者用循环转换

#include <stdio.h>

void main()
{
    int n = 0x123;
    int m = 0, z = 1;
    while (n>0)
    {
        m += n % 16 * z;
        z *= 10;
        n /= 16;
    }
    printf("%d",m);

}

结果 是十进制的123

16进制0x123转换为10进制是291,要10进制也是123吗?

你是有个字符串char ch[] = "0x123",然后要转换成整数123?
如果不是字符串,就没有前面有0x之说,0x只是显示效果,表示这个整数是16进制的123,内存存储还是10进制的数据
你把你有什么,要得到什么说清楚

十六进制0x123 转换为十进制是291 ,不会是123的。。