gpt4 book ai didi

c++ - Arduino 字符数组到整数值

转载 作者:行者123 更新时间:2023-11-30 01:35:20 26 4
gpt4 key购买 nike

愚蠢的问题:

我正在尝试将 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(C++ 实际上是因为 arduino 是用 C++ 编程的)。

strtol 将字符串转换为数字。

C 中的字符串是以零结尾的 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 编译器开始,从非常基础的东西开始学习语言。

关于c++ - Arduino 字符数组到整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54391285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com