c++ - 处理我的数据的更有效方式(整数与 float )

标签 c++ types

一谈到十六进制,我的脑子里就放屁很多。有些人很灵巧,有些人只是右撇子……好吧,有点像那样,我猜我是 base10。

无论如何...我正在尝试使一些固件更高效。我们有一个函数可以根据通过 CANBUS 获得的一些十六进制数据计算车辆的速度。现在我正在将它转换为 float ,这样我就可以全神贯注了,但我想知道如果我们将它保留为整数格式,我们是否会使用更少的 ROM 空间?可以在不损失准确性的情况下完成吗?现在我的花车精确到 1/16 公里/小时。我知道这个函数看起来很简单,但每秒运行数百次它有点拖沓。

首先,这里是一些示例数据:

[06] [3c] ... [06] [3a] ... [06] [3b] ... [06] [46] ... [06] [3b] ...

我省略了其他 6 个字节,因为它们与速度无关。左边的字节我们称为 speed_a,右边的字节称为 speed_b。这是要转换的函数:

float calculateSpeed()
{
    float speed;
    speed = ( ( float )speed_a * 256.0 + speed_b ) / 16.0;
    return speed;
}

所以上面的数据将转化为:

99.7500 99.6250 99.6875 100.3750 99.6875

这确实准确地反射(reflect)了车辆以公里/小时为单位的真实速度。但是对于我们的应用程序,我们并不真正关心真正的速度是多少,因为一切都是相对的。只要我们不失去决心,我们就很高兴。我考虑过将所有内容都保留为 INT 形式,但是当您除以 16 时它只会截断。

我对大多数事情都不是白痴......但我是 base2 的白痴。

小的帮助?谢谢。

最佳答案

不要除以 16.0。您仍然可以比较、排序、增加或减少速度。

关于c++ - 处理我的数据的更有效方式(整数与 float ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1376626/

相关文章:

c++ - 引用在堆栈上使用了多少内存

c++ - 在 C++ 中为结构实现索引器

c++ - 从文本文件 : weird behaviour 中读取单词

c++ - 是否可以为某个表达式#define 两个单词,而不仅仅是一个单词?

c# - 从 C# 代码内部访问 F# 列表

string - 如何检查给定变量值是否为字符串类型

mysql - MySQL 中货币的最佳数据类型是什么?

调用析构函数后的 C++ 动态模板队列 "double free or corruption (out)"

TypeScript keyof 返回特定类型

php - 用于特定插入的数据类型