如何在Arduino中将字符串转换为uint16_t?

时间:2017-07-12 11:22:26

标签: string arduino uint16

字符串变量将包含一个十六进制,我们需要安全地放在uint16_t

示例:

String hexa = "0x11A0";
uint16_t num = ???;

请记住,我不需要在这里转换为小数 即我的要求是unint16_t num = 0x11A0;。我需要从十六进制转换为unint16_t

unint16_t可以包含0x11A0,但我的问题是我无法从字符串变量中获取值并将其保存在unint16_t中。

2 个答案:

答案 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]);
  }