• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

dsp28335中字符类型转换的问题

一个不懂确热爱电子的人 2016-03-14 浏览量:2491
现在是在用tms28335准备写一个存储的程序,就是从用sd卡存储adc采集到的电压值,但是问题就是采集到的电压是float型,我在存储时,需要数据是char型的,我试过用sprintf将float数组打印到char数组中,结果不不知道为何数据进不去,而强制将float转换成char则最后结果是乱码的,我又试了一句sprintf(add,"%d",1234);,结果1234根本没进到我定义的add(char类型)数组中去。求住各位大神,这怎么解决?编译器是ccs6.0
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 你存储的是16进制的数据,不是ascii码的,你用WinHex打开看看。

    另,你的SD卡用的是SPI的方式吧?

    以下是我的程序:

    sprintf((char*) day, "%02d", DAY);

    • 发布于 2016-03-14
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:18

  • 你存储的文件用WinHex看了没,是什么值?

    你是用的数组还是指针,分配的空间是不是足够大。

    sprintf后,数组中的值是多少?


    • 发布于2016-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 用winhex打开是16进制的,用的数组,空间足够,sprintf后float数组中值是正确的,但是转换后的值显示是乱七八糟的
    • 发布于2016-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 不知道为什么,我开始定义char[i]=50;(循环了的,就是从0到100都是50),最后char数组的值是2,刚好ascll码50对应是2,也就是说,float数组的值根本没有写进char数组中去。。也就是那句语句要么是没有执行,要么是语句没有转换的功能
    • 发布于2016-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • char ttt[10]={0};
        sprintf(ttt,"%f",55.55f);

        asm(" NOP");

    • 发布于2016-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 我这不方便啊,是在公司项目里的程序,你可以发一下你的关键部分的程序,我看看啊。
    • 发布于2016-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • ttt的值是什么叫,怎么是sprintf 的?


    • 发布于2016-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 你运行到nop那一行加个断点,看一下ttt数组的值就可以看出来了,你这个是在仿真的时候吧,你用的什么仿真器,我用的是XDS100的,要停下来才能看到值。
    • 发布于2016-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 不会吧,我的没问题。

    你上面的图是看到sprintf 的地址吧。


    • 发布于2016-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 你也不一定非要用sprintf。

    把浮点数扩大转换成整数,按个位十位百位千位分开,不过可能比较麻烦。

    • 发布于2016-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果不行,自己写个转换函数呗,好像ctype.h里还有一些转换函数,条条大路通罗马
    • 发布于2016-03-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 你这是强制转换  这样可以行么
    • 发布于2016-03-14
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

dsp28335中字符类型转换的问题