十六进制数如何转十进制 C/C++实现

这篇具有很好参考价值的文章主要介绍了十六进制数如何转十进制 C/C++实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.问题分析

我们输入一个真正意义上的十六进制数,0x开头,返回一个十进制数。

二.思路生成

输入一个十六进制的数,依次取出它的每一位,然后根据权值累加,得到10进制值。

三.问题解决及代码

以C++为例
1.如何输入一个16进制数,使用标志符hex,cin>>hex>>"变量名"

如果指定了输入进制数,如上,那么以后你输入的都是hex即16进制格式的数


	int n,m,h;
	//cin>>hex代表输入的数是16进制的,系统默认是十进制数,
	cin >>hex>> n>>m;
	//已经改变了输入格式,因此h也是16进制的
	cin >> h;
	//输出没有改变,则会将16转成10进制输出
	cout << n<<" "<<m<<" "<<h<<endl;

输出结果如下,不按照16进制格式即0x输入,系统也会变成16进制数,第二行为10进制输出

c++十六进制转十进制,c语言,c++,开发语言

2.如何将16进制数n 每一位存储,并且计算各个位的权值,代码如下
void fun3(int n) {
	//计算转化十进制后和
	unsigned int sum = 0;
	//用数组来存储16进制各个位的数据
	int i = 0; unsigned int arr2[10];

	//每次循环取出最低一位存储到arr2数组里
	while (n > 0) {
		//取最低位存储到arr2的低位
		arr2[i] = n % 16;
		//输出每次取的数
		cout <<hex<< arr2[i] << " ";

		i++;
		//移除取出的数
		n = n / 16;
	}
	cout << endl;
	//计算权值,例如5fff, 输出第三行即为sum每次累加的值
	for (int j = i - 1; j >= 0; j--) {
		sum = sum * 16 + arr2[j];
		cout << hex << sum << " ";
	}
	cout << endl;
	cout <<dec<< sum << endl;


}

关于输出界面 第二行是每次循环取出的数,第三行是每次sum累加的值,这样更便于理解

c++十六进制转十进制,c语言,c++,开发语言
C语言实现

下面代码会给到详细注释,这里就不多赘述了

void fun3(int n) {
	//计算转化十进制后和
	unsigned int sum = 0;
	//用数组来存储16进制各个位的数据
	int i = 0; unsigned int arr2[10];

	//每次循环取出最低一位存储到arr2数组里
	while (n > 0) {
		//取最低位存储到arr2的i位,i初始值为0
		arr2[i] = n % 16;
		//输出每次取的数
		//%x以hex16进制输出,%o就是oct八进制输出,%d就是dec十进制输出
		printf("%x ", arr2[i]);

		i++;
		//移除取出的数
		n = n / 16;
	}
	printf("\n");
	//计算权值,例如5fff, 输出第三行即为sum每次累加的值
	for (int j = i - 1; j >= 0; j--) {
		sum = sum * 16 + arr2[j];
		//输出每次sum累加的值
		printf("%x ", sum);
	}
	printf("\n");
	//输出总值
	printf("%x\n",sum);


}

关于输出界面 第二行是每次循环取出的数,第三行是每次sum累加的值,这样更便于理解

c++十六进制转十进制,c语言,c++,开发语言文章来源地址https://www.toymoban.com/news/detail-760315.html

到了这里,关于十六进制数如何转十进制 C/C++实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言:十进制与十六进制的转化

    要将十进制数转换为十六进制数, 可以使用以下步骤: 1. 将十进制数除以 16,得到商和余数。 2. 用余数作为当前位的十六进制数位,余数可能是 0 到 15 之间的数字,分别对应 0 到 F。 3. 将商作为新的十进制数,并重复步骤 1 和 2,直到商为 0。 4. 将得到的十六进制数位按照

    2024年02月05日
    浏览(78)
  • Java中十六进制与十进制之间互相转换

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 提示:以下是本篇文章正文内容,下面案例可供参考 话不多说,直接上代码 如将十进制数字 108 转换为十六进制 代码示例如下: 运行结果: 这样将一个十

    2024年02月12日
    浏览(55)
  • 简单使用Linux printf 将十进制转换为十六进制

    在开发和排查问题过程中,有时我们需要做一些进制的转换,以下是一些快速的小技巧: 下面的是 十进制转换为十六进制: 还可以把 十六进制转为十进制: 其实中引号中%x为要转换的格式,n为换行“new line” 还可以十进制转换为八进制 另外使用bc命令进行转换也可的大

    2024年04月16日
    浏览(43)
  • STM32【十进制-十六进制转换】无需for循环等复杂函数

    之前做项目用到这个功能,也把网上的许多例程都跑了一遍,看到一些复杂的函数也是很头疼,一些方法都是需要用sprintf来操作,但在这里并不适用,最后小鱼君询问 chatgpt 直接解决问题。 由于用到了DWIN串口屏,所以需要将一个三位数的十进制变量转化为十六进制去输出。

    2024年02月14日
    浏览(51)
  • 字符串string转换长整型int(八进制、十进制、十六进制)

    strtoul() 是C语言标准库中用于将字符串转换成无符号长整数的函数。它的完整原型如下: 其中, nptr 代表要被转换成无符号长整数的字符串; endptr 是一个指向字符指针的指针,该指针指向已经转换了的最后一个字符的下一个位置; base 指定要采用的进制,范围是2 ~ 36。 该函

    2024年02月07日
    浏览(54)
  • 进制转换—包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细

    目录 1.进制转换必备知识:         1.1 二进制逢2进1         8进制逢8进1           10进制逢10进1        16进制逢16进1         1.2为了区分二、八、十、十六进制,我们通常在数字后面加字母进行区分 2. 二进制与八进制、十六进制相互转换         2.1 二进制转

    2023年04月23日
    浏览(99)
  • 【进制转换】— 包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细

    目录 1.进制转换必备知识:         1.1 二进制逢2进1         8进制逢8进1           10进制逢10进1        16进制逢16进1         1.2为了区分二、八、十、十六进制,我们通常在数字后面加字母进行区分 2. 二进制与八进制、十六进制相互转换         2.1 二进制转

    2024年02月05日
    浏览(306)
  • C语言:写一个函数,输入一个十六进制数,输出相应的十进制数

    分析:     当用户运行该程序时,程序会提示用户输入一个十六进制数。用户需要在命令行中输入一个有效的十六进制数,例如:\\\"1A3F\\\"。     接下来,程序调用了名为 xbed 的函数,并将用户输入的十六进制数作为参数传递给该函数。 在函数 xbed 中,我们定义了两个变量 i 和

    2024年02月04日
    浏览(47)
  • MFC Windows 程序设计[332]之十进制转十六进制编辑框(附源码)

    MFC是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。 有很多初学MFC的小伙伴们都觉得MFC比较难学,看书吧,看

    2024年02月08日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包