Arduino char数组为整数值

时间:2019-01-27 18:08:37

标签: c++ arrays arduino char hex

愚蠢的问题在这里

我正在尝试将char数组转换为整数。 这是我的情况(从主要代码中提取,我已经简单地确定了..):

int val;
char *buff;
uint8_t v1 = 2;
uint8_t v2 = 25;

buff[0] = v1;
buff[1] = v2;
val = strtol(buff, NULL, 16);

在这种情况下,val始终返回“ 0”,但是,如果我将“ buff”替换为“ 0x225”,它将返回549的期望值。

我做错了什么? 谢谢。。

1 个答案:

答案 0 :(得分:4)

您需要学习C(实际上是C ++,因为arduino是用C ++编程的)。

strtol将字符串转换为数字。

C中的

string是一个以零结尾的char元素数组(不是<label> <input type="date" name="lastBeginDate" id="lastBeginDate" required=""> Pick a Date </label> ,而是/** * The subject of the message. * * @var string */ public $subject; )。因此,“ 0x225”是'0'

的数组

0不是数字{'0', 'x', '2', '2', '5', 0}。它是char'2'的ASCII表示形式,十进制为50。

'2'

您的代码还有许多其他问题。您需要了解25和0x25是什么(它们不相等)。您应该从书和PC编译器开始,并从最基础的东西中学习语言。