愚蠢的问题在这里
我正在尝试将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的期望值。
我做错了什么? 谢谢。。
答案 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编译器开始,并从最基础的东西中学习语言。