Arduino char 数组到整数值

Arduino char array to integer value

本文关键字:整数 数组 char Arduino      更新时间:2023-10-16

这里有一个愚蠢的问题:

我正在尝试将字符数组转换为整数。这是我的情况(从主代码中提取,我简单地说了..):

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',但是,如果我用 "0x225" 替换 'buff',它会返回期望值 549。

我做错了什么?提前感谢..

你需要学习C(C++实际上是用C++编程的)。

strtol 将字符串转换为数字。

C 中的字符串是以零结尾的 char 元素数组(不是 '0' 而是 0 )。所以"0x225"是{'0', 'x', '2', '2', '5', 0}数组

'2'不是数字2.它是字符"2"的 ASCII 表示形式,十进制为 50。

buff[0] = '0';
buff[1] = 'x';
buff[2] = '2';
buff[3] = '2';
buff[4] = '5';
buff[5] = 0;
val = strtol(buff, NULL, 16);

buff[0] = 48;
buff[1] = 120;
buff[2] = 50;
buff[3] = 50;
buff[4] = 53;
buff[5] = 0;
val = strtol(buff, NULL, 16);

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