对于十六进制,我的大脑放屁很多.有些人是灵巧的,而其他人只是简单的右手...好吧,有点像那样,我猜我是非常基础的.
无论如何......我正试图让一些固件更有效率.我们有一个功能,它根据通过CANBUS获得的一些十六进制数据来计算车辆的速度.现在我正在将它转换为浮点数,所以我可以把它包裹起来,但是我想知道如果我们把它留在整数格式中,我们是否会使用更少的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;
}
Run Code Online (Sandbox Code Playgroud)
所以上面的数据会转化为:
99.7500 99.6250 99.6875 100.3750 99.6875
这确实反映了以kph为单位的车辆的真实速度.对于我们的应用,我们并不关心真正的速度是什么,因为一切都是相对的.只要我们不失去决心,我们就会感到高兴.我想过只保留INT形式的所有内容,但是当你除以16时它只是截断.
我对大多数事情都不是个白痴......但我对base2来说是个白痴.
Lil'帮忙吗?谢谢.