标题: stc8H单片机怎么把这种字符转成十进制数呀 [打印本页]

作者: 创造生活    时间: 2024-5-2 12:19
标题: stc8H单片机怎么把这种字符转成十进制数呀
     各位大神中午好,怎么把字符3130303030302E313232,变成十进制数呢?结果是100000.123,我用的是stc8系列单片机,用C语言写,有现成的库函数可以用吗?要实现这个目的编程思路是怎样的呀?共用体要是能实现该怎么用呀?不管用什么方法请大神赐教!最好把代码写一下我学习一下,不胜感激!
作者: Hephaestus    时间: 2024-5-2 14:51

#include<stdio.h>
sscanf();
作者: zhuls    时间: 2024-5-2 16:06
从哪来的数值?单片机怎么会有这么大的数字?80bit.你用什么类型的变量来装它?电脑上的计算器也才64位。。
作者: zhuls    时间: 2024-5-2 16:18
你这个是ASC内码吧?0x31 0x30 0x30 0x30 0x30 0x30 0x2E 0x31 0x32 0x32,翻译成字符串就是100000.122
作者: 创造生活    时间: 2024-5-2 18:07
zhuls 发表于 2024-5-2 16:18
你这个是ASC内码吧?0x31 0x30 0x30 0x30 0x30 0x30 0x2E 0x31 0x32 0x32,翻译成字符串就是100000.122

说的对
作者: Hephaestus    时间: 2024-5-2 19:01
  1. #include<stdio.h>
  2. void main(){
  3.         float d;
  4.         sscanf("100000.123","%f",&d);
  5.         printf("%f\r\n",d);
  6. }
复制代码


都提示到这个程度了,你就不会自己查下sscanf怎么用???
作者: 创造生活    时间: 2024-5-12 14:14
Hephaestus 发表于 2024-5-2 19:01
都提示到这个程度了,你就不会自己查下sscanf怎么用???

非常感谢您的指导,获益非浅谢谢
作者: joyb    时间: 2024-5-12 14:38
zhuls 发表于 2024-5-2 16:18
你这个是ASC内码吧?0x31 0x30 0x30 0x30 0x30 0x30 0x2E 0x31 0x32 0x32,翻译成字符串就是100000.122

水平高
作者: samxon    时间: 2024-5-12 14:56
         我试了一下,提取不成功, 至少time没有提取到。
                str[20]="time 110";
                        sscanf(str,"%s %d",command,&temp);               
                        if(command == "time"){temp=5;}
作者: Hephaestus    时间: 2024-5-12 20:00
samxon 发表于 2024-5-12 14:56
我试了一下,提取不成功, 至少time没有提取到。
                str[20]="time 110";
                        sscanf(str,"%s %d",command ...

这已经不是有咩有提取到的问题了,(command == "time")这个写法就是非法的。
作者: rundstedt    时间: 2024-5-17 14:27
samxon 发表于 2024-5-12 14:56
我试了一下,提取不成功, 至少time没有提取到。
                str[20]="time 110";
                        sscanf(str,"%s %d",command ...

你没学过strcmp()函数?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1