This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器:C5515 -以Int16格式打印FLOAT32

Guru**** 2587365 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/604956/compiler-c5515---printf-a-float32-in-int16-format

工具/软件:TI C/C++编译器

您好,

我需要转换Int16 Array C5515中的Float32阵列。

我该怎么做?

非常感谢

Paolo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    所有值是否都适合16位的带符号int?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,它们是。
    我需要以Int16格式打印阵列
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果截断正常,或者如果您需要对cimal()或floor()函数进行特殊舍入,则转换应该有效。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这不是解决办法
    示例:我的float f = 1.25.6647万
    我希望它的格式为Int16 i = 0xXYZT
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么请更清楚地说明,您想要在"Int16 (Int16)"中做什么?

    0x0001有什么问题?

    显然,浮点不是整数。

    是否要将16位浮点表示填充到16位整数中?
    是否要固定点?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好,我觉得这就是解决方案:

    浮子h;

    printf ("0x%x,\n",*(Int16*)&h);

    这应以所需的格式打印号码...您怎么看? 我不确定它是否正确...

    非常感谢

    Paolo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    AFAIK浮点在C5155上是32位*,这是来自编译器手册:

    浮动 32位IEEE 32位
    双倍 32位IEEE 32位
    长双32位IEEE 32位

    所以,你的浮子大小和双精度的大小一样。 存在* IEEE 16位“半精度”浮点,但它只允许3位精度,编译器不支持。

    所以,你正在尝试把32磅的糖放入一个16磅的袋子里。 我认为您的解决方案只会把事情截断,让您一团糟。 同样,您想做什么?

    如果要检查,只需执行sizeof(float),但要注意:
    "根据ISO C定义,运算符的大小将生成存储所需的字节数
    对象。 ISO进一步规定,当sizeof应用于char时,结果为1。 自
    C55x字符为16位(使其可单独寻址),字节也为16位。 这就产生了
    结果可能不是预期的;例如,sizeof (int)== 1 (而不是2)。 C55x字节和字是
    等效(16位)。"

    因此,如果大小为32位,则尺寸(float)将为2。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Keith:

    例如,在VC5505 FFT过滤器演示中,有  

    Int16 coeffs[LPF_7_TAP ]={
    0x00c5,0x0328,0x081f,0x0aab,0x081f, 0x0328,0x00c5

    };

    这是从一个包含三角函数的数学表达式中产生的,目的是为了计算Hamming窗口。

    我想重新创建一个新的筛选器,并将这些值与上面的示例类似,采用Int16格式。

    非常感谢,Keith。

    再见

    Paolo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您需要深入了解代码并了解这些代码的含义。 我怀疑它是正整数或固定点,而不是浮点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的Keith,我找到了解决方案。
    我需要将float转换为Q15格式。

    谢谢
    Paolo