0

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

例子:

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

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

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

4

2 回答 2

0

您想将包含整数的十六进制表示的字符串转换为整数吗?

strtol可以做到这一点。

请记住,Arduino 内部的整数是二进制数。只有在向人类呈现值时,我们才关心二进制、十进制、八进制和十六进制。大多数微处理器对二进制值进行操作。

因此,在脚本顶部包含一个文件,并使用该strtol函数将字符串转换为整数。通过使用 0 作为基本参数,它将处理十进制、八进制和十六进制格式的值。

#include <stdlib.h>
...
// we use .c_str() to access the underlying C string
int16_t x = strtol(hexa.c_str(), NULL, 0);
于 2017-07-12T15:12:53.430 回答
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]);
  }
于 2018-01-01T06:59:54.507 回答