繁体   English   中英

Arduino char数组为整数值

[英]Arduino char array to integer value

愚蠢的问题在这里:

我正在尝试将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的期望值。

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

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

strtol将字符串转换为数字。

C中的string是一个以零结尾的char元素数组(不是'0'而是0 )。 因此,“ 0x225”是{'0', 'x', '2', '2', '5', 0}的数组

'2'不是数字2 它是char'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编译器开始,并从最基础的知识中学习语言。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM