OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5158|回复: 13

关于十六进制转十进制的问题,0x0101这种四位的16进制如何处理?

[复制链接]

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
发表于 2020-8-20 16:51:28 | 显示全部楼层 |阅读模式
关于十六进制转十进制的问题,例如0x01转十进制,没有问题,但是例如0x0101这种四位的,结果就出错了,请教一下,如何解决?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6745
金钱
6745
注册时间
2017-4-12
在线时间
1258 小时
发表于 2020-8-20 19:14:10 | 显示全部楼层
转十进制?你给十六进制,程序就不管你什么,所谓的十六进制和十进制,对于机器来说都是一堆0   1
回复 支持 反对

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-21 08:35:52 | 显示全部楼层
245925587 发表于 2020-8-20 19:14
转十进制?你给十六进制,程序就不管你什么,所谓的十六进制和十进制,对于机器来说都是一堆0   1

我需要转成十进制显示
回复 支持 反对

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2020-8-21 10:03:57 | 显示全部楼层
支持者2400 发表于 2020-8-21 08:35
我需要转成十进制显示

可以尝试学习一下,sprinf,printf函数.
实在不行,  /10%10 之类的算法可以得到你想要的.
回复 支持 反对

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4920
金钱
4920
注册时间
2017-7-6
在线时间
721 小时
发表于 2020-8-21 10:55:48 | 显示全部楼层
支持者2400 发表于 2020-8-21 08:35
我需要转成十进制显示

先把它转换成十进制,然后用取余和除来分开各个位
我是小白,很白很白的小白!!!
回复 支持 反对

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-21 11:02:32 | 显示全部楼层
程功之道 发表于 2020-8-21 10:55
先把它转换成十进制,然后用取余和除来分开各个位

现在就是转换成十进制有问题,0x01这种可以转换,0x0101转换结果不对
回复 支持 反对

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-21 11:02:58 | 显示全部楼层
操作系统 发表于 2020-8-21 10:03
可以尝试学习一下,sprinf,printf函数.
实在不行,  /10%10 之类的算法可以得到你想要的.

这两个函数输出不行
回复 支持 反对

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2020-8-21 12:28:58 | 显示全部楼层
支持者2400 发表于 2020-8-21 11:02
这两个函数输出不行

我们就是这么干的,就行了.你怎么不行呢?
回复 支持 反对

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-21 13:28:59 | 显示全部楼层
操作系统 发表于 2020-8-21 12:28
我们就是这么干的,就行了.你怎么不行呢?

大佬,你帮我做一个示范呗,就是把0x0101转换成十进制
回复 支持 反对

使用道具 举报

0

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2019-3-6
在线时间
36 小时
发表于 2020-8-21 13:40:33 | 显示全部楼层
本帖最后由 QuiGonJinn 于 2020-8-21 13:42 编辑
支持者2400 发表于 2020-8-21 13:28
大佬,你帮我做一个示范呗,就是把0x0101转换成十进制

你确定定义的对象是16位的吗?
另外,以后遇到这种问题,直接把问题相关的代码贴出来,编译环境也大致说明一下
回复 支持 反对

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-21 13:47:53 | 显示全部楼层
QuiGonJinn 发表于 2020-8-21 13:40
你确定定义的对象是16位的吗?
另外,以后遇到这种问题,直接把问题相关的代码贴出来,编译环境也大致说 ...
  1. if((RxBuffer1[3]<<8)+RxBuffer1[4]==0x01F4)
  2.                                  {
  3.                                                   a=charhex_to_dec("(RxBuffer1[3]<<8)+RxBuffer1[4]");
  4.              a=charhex_to_dec("RxBuffer1[0]");
  5.                    LCD_ShowxNum(56,50,a,5,16,0);
  6.                                             LED0=0;
  7.                        
  8.                                  }
复制代码
回复 支持 反对

使用道具 举报

0

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2019-3-6
在线时间
36 小时
发表于 2020-8-21 13:55:38 | 显示全部楼层
本帖最后由 QuiGonJinn 于 2020-8-21 13:56 编辑

所以问题来了

1. 变量a到底定义的是16位的还是8位的?
2. 函数charhex_to_dec()的返回值是16位的还是8位的?


我觉得这就不是什么了不起问题,纯粹是C语言基础太差而已
提示你到这个程度应该足够了,剩下的自己去查,就当是个学习过程吧
回复 支持 反对

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6662
金钱
6662
注册时间
2016-5-29
在线时间
910 小时
发表于 2020-8-21 14:02:29 | 显示全部楼层
支持者2400 发表于 2020-8-21 13:28
大佬,你帮我做一个示范呗,就是把0x0101转换成十进制

char buf[128];
unsinged int a = 0x1010;
printf("%d",a); //直接输出到屏幕

sprintf(buf,"%d",a);//输出到变量

printf(buf);  //打印变量
回复 支持 反对

使用道具 举报

210

主题

773

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-3-26
在线时间
288 小时
 楼主| 发表于 2020-8-21 15:47:22 | 显示全部楼层
操作系统 发表于 2020-8-21 14:02
char buf[128];
unsinged int a = 0x1010;
printf("%d",a); //直接输出到屏幕

谢谢老哥
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 04:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表