首页 > 解决方案 > 将两个 ASCII DEC 值合并在一起并转换为 int

问题描述

我有两个 DEC 变量,我想像这样合并它们:

unsigned int first_dig = 57;   // Number 9
unsigned int second_dig = 52;  // Number 4
unsigned int all_dig = 0;

现在我想将它们保存在 all_dig 中。我已经尝试过移动字节,但结果是一团糟

all_dig = ((first_dig<<8)|second_dig); // prints 14644

我希望 all_dig 包含94. 有没有更简单的方法?我也想对三位数字使用相同的概念。

已经感谢您的帮助

标签: arduinotype-conversion

解决方案


对于两位数,d_1, d_0

res = (d_1 - '0') * 10 + (d_0 - '0')

对于三位数,d_2, d_1, d_0

res = (d_2 - '0') * 100 + (d_1 - '0') * 10 + (d_0 - '0')

请注意,表达式仅在以下情况下有效

'0' <= d_i <= '9' for each d_i

如果不是这样,结果将不正确。


推荐阅读