Как преобразовать определенный элемент строки в int Arduino/C

#c #string #arduino #type-conversion #integer

Вопрос:

Я работал над проектом конвертера с использованием Arduino/C. В определенный момент в моем коде генерируется String последовательность из 0 и 1, например: my_string = "01101"; . Я хочу обработать эти данные в цикле for, как показано в этом минимальном примере:

 String x = "01011", y = "00011"; // These variables necessarily must have the same length

for(int i = 5; i > -1; i--) // Going from last index to first
{
    bitsum = x[i].toInt()   y[i].toInt(); // Summing up each pair of bit, here is the problem
}
 

Моя точка зрения такова: есть ли способ взять точный и конкретный элемент String и преобразовать его в int один за другим?

Заранее спасибо!

Комментарии:

1. Arduino обычно программируется на C , и то, что вы используете String класс, означает, что вы тоже это делаете.

2. Извини за это. Я не уверен, понял ли я то, что вы сказали о Струнах. Не могли бы вы объяснить, пожалуйста?

3. Он просто сделал вывод, что вы говорили не о C, потому что в вашем коде используется объект Arduino (т. Е. C ) String .

4. Спасибо вам, ребята, за разъяснение!

Ответ №1:

Если вы уверены, что символы my_string всегда будут цифрами, то типичным методом получения char числового значения числа является простое вычитание '0' . Это работает, потому что значения ASCII для цифр расположены по порядку , поэтому, вычитая '0' , вы вычитаете их смещение (48) из фактического значения 0.

Этот charAt(n) метод можно использовать для получения символа с заданным индексом.

 bitsum = x.charAt(i) - '0'   y.charAt(i) - '0';
 

Комментарии:

1. Большое вам спасибо за ваш вклад, он мне очень помог!