OpenEdv-开源电子网

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

求助,怎么让把flash读出的字节变成整数?

[复制链接]

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2016-3-17
在线时间
21 小时
发表于 2016-3-31 14:08:00 | 显示全部楼层 |阅读模式
4金钱
人没有人知道,或者给我一段源码,非常感谢!!!!!!

最佳答案

查看完整内容[请看2#楼]

/******************************************************************************************** 函 数 名: 字符串转换成浮点数处理函数 调 用: CX_atof(u8 *s) 参 数: *str 要转换的字符串数组指针首地址,本函数只取4位小效值 返 回 值: 字符串的有效值(浮点数类型,小数位有效值取4位数) ********************************************************************************************/ float CX_atof(u8 * ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3347
金钱
3347
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-3-31 14:08:01 | 显示全部楼层
本帖最后由 likunxue 于 2016-3-31 14:39 编辑
松志竹心 发表于 2016-3-31 14:35
是的 ,就是这样啊

/********************************************************************************************
函 数 名: 字符串转换成浮点数处理函数
调    用: CX_atof(u8 *s)
参    数: *str 要转换的字符串数组指针首地址,本函数只取4位小效值
返 回 值: 字符串的有效值(浮点数类型,小数位有效值取4位数)
********************************************************************************************/
float CX_atof(u8 *str)
      {
      float f;
      s32 dat,df;
      u8  st,fs;
      while((*str==' ')&&(*str!='\0'))str++;//找到空格之后的第一个字符的指针位置
      dat =0;  //整数变量清零
      df  =0;  //小数变量清零
      st  =0;  //符号标志初始置正数
      fs  =0;  //清除小数点标志
      while(*str != '\0')
           {
           if(*str == 0x2d){if(st) break;else st =0xff;}//如果出现两次负号则退出转换
           else{
               if(*str == 0x2e){if(fs)break;else{fs= 0xff;df = 1;}}//出现两次小数点则退出转换
               else{
                   if((*str >= 0x30)&&(*str <= 0x39))//有效数字
                     {
                     if(fs)df = df * 10; //处理小数位
                     dat = dat * 10 + (*str - 0x30); //处理整数
                     if(df >10000)break; //小数位起过4位数了
                     }
                   else break; //非法字符退出
                   }
               }
           str ++; //字符串指针加1指向下一个字符
           }
      if(st != 0)dat =- dat; //变换符号位
      if(fs != 0)f = (float)dat/df; //处理小数位
      else f = dat;
      return(f);
      }

这是我用的一个字符串转浮点数据, 整数一样可用
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3347
金钱
3347
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-3-31 14:25:13 | 显示全部楼层
详细说明一下你的要求, 我来帮你解决
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2016-3-17
在线时间
21 小时
 楼主| 发表于 2016-3-31 14:31:33 | 显示全部楼层
likunxue 发表于 2016-3-31 14:25
详细说明一下你的要求, 我来帮你解决

我先写了一个整数比如5000进一个FLASH 里面,通过10进制转ASCLL码,然后读取出来的是字节,我想把字节再转换回一个整数,比如5000.
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3347
金钱
3347
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-3-31 14:32:52 | 显示全部楼层
松志竹心 发表于 2016-3-31 14:31
我先写了一个整数比如5000进一个FLASH 里面,通过10进制转ASCLL码,然后读取出来的是字节,我想把字节再 ...

意思是把ASCLL码转换成数据是吧?
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2016-3-17
在线时间
21 小时
 楼主| 发表于 2016-3-31 14:34:31 | 显示全部楼层
松志竹心 发表于 2016-3-31 14:31
我先写了一个整数比如5000进一个FLASH 里面,通过10进制转ASCLL码,然后读取出来的是字节,我想把字节再 ...

就好比这样,要输出一个整数为5000
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2016-3-17
在线时间
21 小时
 楼主| 发表于 2016-3-31 14:35:40 | 显示全部楼层
likunxue 发表于 2016-3-31 14:32
意思是把ASCLL码转换成数据是吧?

是的 ,就是这样啊
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2016-3-17
在线时间
21 小时
 楼主| 发表于 2016-3-31 14:39:26 | 显示全部楼层
likunxue 发表于 2016-3-31 14:37
/********************************************************************************************
函  ...

非常感谢
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2016-3-17
在线时间
21 小时
 楼主| 发表于 2016-3-31 15:20:03 | 显示全部楼层
likunxue 发表于 2016-3-31 14:08
/********************************************************************************************
函  ...

亲 ,我把你的函数写进去 F没有值显示啊
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3347
金钱
3347
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-3-31 18:07:51 | 显示全部楼层
松志竹心 发表于 2016-3-31 15:20
亲 ,我把你的函数写进去 F没有值显示啊

转换函数中有几个条件限制, 你要看清楚, 这个跟你的数据转换成ASCII码有关, 我提供给你的函数有时只能做你的参考, 因为转换函数需要根据你的数据转换成ASCII码的条件来写, 如果你自已无法完成, 可以把你的数据转换成字符串的函数放上来我帮你看看。
回复

使用道具 举报

0

主题

63

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3867
金钱
3867
注册时间
2015-8-26
在线时间
285 小时
发表于 2016-3-31 18:30:35 | 显示全部楼层
路过看看
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2016-3-17
在线时间
21 小时
 楼主| 发表于 2016-3-31 18:30:44 | 显示全部楼层
likunxue 发表于 2016-3-31 18:07
转换函数中有几个条件限制, 你要看清楚, 这个跟你的数据转换成ASCII码有关, 我提供给你的函数有时只能 ...

float y;
y=CX_atof(data) ;



就是这样,调用的时候好像有问题,能告我下我怎么调用的吗,单步调试有是准确的,Y就是不显示
回复

使用道具 举报

5

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2016-3-17
在线时间
21 小时
 楼主| 发表于 2016-3-31 18:31:03 | 显示全部楼层
likunxue 发表于 2016-3-31 18:07
转换函数中有几个条件限制, 你要看清楚, 这个跟你的数据转换成ASCII码有关, 我提供给你的函数有时只能 ...

float y;
y=CX_atof(data) ;



就是这样,调用的时候好像有问题,能告我下我怎么调用的吗,单步调试有是准确的,Y就是不显示
回复

使用道具 举报

9

主题

507

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3347
金钱
3347
注册时间
2013-4-10
在线时间
333 小时
发表于 2016-3-31 20:05:58 | 显示全部楼层
本帖最后由 likunxue 于 2016-3-31 20:22 编辑
松志竹心 发表于 2016-3-31 18:31
float y;
y=CX_atof(data) ;

你的 data , 应该是你读取字串的指针的首地址

比如, 你从读取的一个字符串为   char  *Br = "123.425";

Y = CX_atof(Br) ;
Y = 123.425;








回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 08:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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