【发布时间】:2021-05-20 11:24:40
【问题描述】:
你好,我有这样的变量:
uint8_t *str value = "100663296";
我只是不想转换为 str 的十六进制解释。 我不需要对此变量进行任何数学运算。
uint8_t *output value = "6000000";
如何正确操作?我不能使用 convert to int 和 sprintf 因为我的 MCU 上没有内存。
【问题讨论】:
-
您会如何手动操作?以十进制表示连续除以 16,得到一个接一个的数字。您可能正在尝试类似的方法,重用已评估的十进制字符串的字符。这应该起作用,因为目标基数大于源基数。之后不要忘记恢复生成的字符串。
-
如果
printf本身的代码太大:许多微控制器的编译器提供了排除浮点转换的方法,这是最复杂的。也许你应该检查一下。 -
您知道将十进制数转换为十六进制所涉及的数学吗?如果你不这样做,你需要先学习数学。如果你这样做了,那么只需在 C++ 中逐字实现数学。
-
itoa()有足够的内存吗?无论是包含其他人的代码还是编写自己的代码,您至少需要足够的精简版本。 -
@TimRandall 考虑到 first answer given 的 cmets,我认为问题在于
printf函数——因为意外启用了浮点转换。
标签: c++ type-conversion