字符串变量将包含一个十六进制,我们需要安全地放在uint16_t
?
示例:
String hexa = "0x11A0";
uint16_t num = ???;
请记住,我不需要在这里转换为小数
即我的要求是unint16_t num = 0x11A0;
。我需要从十六进制转换为unint16_t
。
unint16_t
可以包含0x11A0
,但我的问题是我无法从字符串变量中获取值并将其保存在unint16_t
中。
答案 0 :(得分:0)
您想将包含整数十六进制表示的字符串转换为整数吗?
strtol
可以做到这一点。
请记住,Arduino中的整数是二进制数字。只有在向人类展示价值时,我们才关心二进制,十进制,八进制和十六进制。大多数微处理器都以二进制值运行。
因此,在脚本顶部包含一个文件,并使用strtol
函数将字符串转换为整数。通过对 base 参数使用0,它将处理十进制,八进制和十六进制格式化的值。
#include <stdlib.h>
...
// we use .c_str() to access the underlying C string
int16_t x = strtol(hexa.c_str(), NULL, 0);
答案 1 :(得分:0)
const short MaxSubs=10;
uint16_t Subs[MaxSubs];
String myStr=String(Node, HEX);
short n=myStr.length();
short k=n;
while(n>0)
{
String sub=myStr.substring(k, n--);
Subs[n]=strtol(sub.c_str(), NULL, 0);
delay(50);`
printf_P(PSTR("%lu: Sub %h \n\r"), millis(), Subs[n]);
}