我有一个运行 C 代码的嵌入式系统,它的工作非常简单;它通过串行连接读取字符,将接收到的字符解释为十六进制数字,并根据接收到的内容,继续执行其他操作。但是,有一种非常特殊的情况,接收到的字符是十进制而不是十六进制。由于这种情况非常罕见(一种错误情况的错误情况),我不希望修改实际的字符接收来决定是否将接收到的值解释为 dec 或 hex,而是添加一个快速算法到我将数字更改为十进制的情况处理。
你会说什么是最快的(如在最有效的处理器方面)这样做的方式?由于该软件在小型 MCU 上运行,因此任何 C 库函数都不是一个选项,因为我不希望添加更多不必要的#include,因此我正在寻找纯数学算法。
为了清楚起见,我不是在问最快的方法来进行基本的十六进制到十进制转换,如 0x45 -> dec 69,但我想做的是转换例如。0x120 转化为十进制 120。
提前致谢!
编辑:对不起,我会尝试更详细地解释。实际代码太长了,我认为没有必要在这里粘贴。所以这就是发生的事情:
首先,我从串行线上读取接收到的数字,比如说“25”。然后我把它变成十六进制数,所以我有一个带有读取值的变量,比如说 X = 0x25。这已经很好了,我不想对此进行修改。在这种非常特殊的情况下,我现在想做的只是改变变量的解释,而不是 X == 0x25,X==25。十六进制的 0x25 变成十进制的 25。这种变化必须有某种数学公式,而不需要任何特定于处理器的指令或库函数?