问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C语言初学者必会:十进制、八进制和十六进制之间的转换

创作时间:
2025-03-20 01:43:19
作者:
@小白创作中心

C语言初学者必会:十进制、八进制和十六进制之间的转换

引用
CSDN
1.
https://m.blog.csdn.net/2403_87046556/article/details/143216232

在计算机编程中,十进制、八进制和十六进制是三种常用的数制表示方式。对于C语言初学者来说,理解这三种数制之间的转换规则和实现方法是非常重要的基础技能。本文将通过具体的代码示例,帮助读者快速掌握十进制、八进制和十六进制之间的转换方法。

十进制的转换

十进制转换为八进制

在C语言中,可以使用printf函数的%o格式说明符来输出一个整数的八进制表示。下面以十进制的整数10转换为八进制的整数为例:

#include<stdio.h>
int main()
{
    int a = 10;
    printf("%o\n",a);
    return 0;
}

运行结果如下:

由以上代码,我们将利用%o输出十进制中的整数10转换为八进制后的一个整数为12。

十进制转换为十六进制

在这里我们又会用到printf函数的%X格式化选项,它会将十进制的整数转换为大写的十六进制格式。下面又以十进制的整数10转换为十六进制的整数为例:

#include<stdio.h>
int main()
{
    int a = 10;
    printf("%X\n", a);
    return 0;
}

运行结果如下:

如果你想要小写的十六进制格式,可以使用%x(小写):

int main()
{
    int a = 10;
    printf("%x\n", a);
    return 0;
}

输出结果为小写的a

解疑:1~9 的整数则会直接输出本身

这是因为,在任何数制中,1~9都表示数值本身,所以它们的表示在任何进制中都是其本身。由此,以下的转换我们均以10以及10以上的整数的转换为例。

特殊0:

在任何数制中,0都表示没有数值,所以它的表示在任何进制中都是0。

八进制的转换

八进制转换为十进制

我们仍以八进制中的10转换为十进制为例:

首先,我们要定义一个变量,并为其赋值八进制中的10;而在这里,要表示其是八进制中的10则需要在所赋的值前面加上“0”,如下图:

#include<stdio.h>
int main()
{
    int a = 010;
    printf("%d\n", a);
    return 0;
}

运行结果如下:

由此可得,八进制中的10转换为十进制则是整数8。

八进制转换为十六进制

这里其实也和十进制转换为十六进制同理,只是变量的性质不同。我们仍以八进制中的10转换为十六进制为例:

#include<stdio.h>
int main()
{
    int a = 010;
    printf("%X\n", a);
    return 0;
}

输出结果为:

所以,八进制中的10转换为十六进制为整数8。

解疑:八进制带上8或9会报错

这是因为如果你想要设置八进制常量,你需要确保使用的是有效的八进制数字。八进制数只包含数字0到7,不包含8或9。因此,如果你想表示一个八进制数,你不能直接使用类似018这样的表示,因为这会导致编译器错误,因为8或9不是有效的八进制数字。

因此,你需要确保你的代码中使用的是有效的八进制数字。

如何做呢?

  1. 使用有效的八进制数字:确保你的八进制常量只包含0到7的数字。例如,如果你想表示十进制的16,你应该使用八进制的20。
  2. 在代码中转换:如果你有一个包含8或9的数字,并且你希望以八进制形式表示它,你可以先将它转换为十进制,然后再转换为八进制。例如,十进制的18转换为八进制是22。
  3. 使用字符串和格式化输出:如果你需要在代码中处理包含8或9的八进制数,你可以将它们存储为字符串,并在需要时使用printfscanf函数的格式化选项来处理它们。例如,你可以使用%o格式化选项来输出一个整数的八进制表示。
  4. 使用预处理指令:在C语言中,你可以使用预处理指令#define来定义一个宏,这样你就可以在代码中使用一个易于理解的名称来代替复杂的八进制数。
  5. 使用十六进制表示:如果你的数字大于7,并且你希望以八进制形式表示它,你可以使用十六进制表示,因为十六进制可以包含8和9(下面会讲到)。

十六进制的转换

十六进制转换为十进制

我们仍以十六进制中的10转换为十进制为例:

和八进制转换为十进制一样,我们要先定义一个变量,并对其赋值,但赋值方式却有所不同。要表示其是十六进制中的10则需要在所赋的值前面加上“0x”,如下图:

#include<stdio.h>
int main()
{
    int a = 0x10;
    printf("%d\n", a);
    return 0;
}

运行结果如下:

所以,十六进制中的10转换为十进制为整数16。

十六进制转换为八进制

我们仍以十六进制中的10转换为八进制为例:

先前我们学习了:%o是printf函数中用于输出一个整数的八进制表示的格式说明符

所以在输出十六进制转换为八进制后的整数时,我们要使用%o ,如下:

#include<stdio.h>
int main()
{
    int a = 0x10;
    printf("%o\n", a);
    return 0;
}

输出结果为:

因此 ,十六进制的10转换为八进制是整数20。

解疑:十六进制中小写x和大写X的区别

在大多数编译器中,0x0X是等价的,但通常推荐使用小写的0x,因为它在编程中更为常见,且被广泛认为是标准的形式。大写的X有时可能在某些上下文中用于强调或为了可读性,但两者在功能上是完全相同的。

结语

至此,我们对于十进制、八进制以及十六进制之间的转换的初步学习就结束啦!本文只是初识,简单了解其中的方法,至于其中深层次的原理,则需要大家另行了解啦!

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号