Как изменить байт на целое число? - Arduino
Я искал везде, но не могли бы вы мне помочь преобразовать этот байт в int? В интернете полно примеров, но не для новичка вроде меня.
КОД:
int Button[] = {2, 4, 7 };
byte E = sizeof(Button);
int I = (int) E;
void setup() {
Serial.begin(9600);
Serial.print (I); // должно быть 3, в настоящее время 61
}
void loop() {
}
Я не знаю, почему байт E не преобразуется в int в int I с помощью команды (int)E. Было бы также удобнее считывать количество элементов напрямую как int. (Вы можете задаться вопросом, почему я хочу это сделать? Потому что я пишу программу с несколькими кнопками, поэтому я просто хочу добавить еще один вывод в массив и не менять целое число «I» (целое число I используется для циклов))
@Joubert, 👍1
2 ответа
Код работает правильно. Функция sizeof()
возвращает количество байтов в переменной, а не количество элементов. Ваш массив имеет тип int
, который состоит из 2 байтов каждый. Таким образом, в сумме вы получаете 6 байтов для всего массива.
Что вам нужно сделать (вычислив количество элементов в массиве), так это разделить количество байтов в массиве на количество байтов для одного элемента:
int I = sizeof(Button)/sizeof(Button[0]);
Преобразование из byte
в int
сработало правильно, но вам это на самом деле не нужно. Вы можете вычислять вещи с обоими типами одинаково. Единственное отличие — это диапазон значений. Поскольку отрицательное число элемента не имеет смысла, и вы, конечно, не хотите определять больше 255 кнопок, вы можете сами выбрать, что вы хотите использовать. Использование byte
сэкономит вам один байт памяти.
sizeof
возвращает размер в байтах. int — это два байта в 8-битном микроконтроллере AVR. Массив из 3 целых чисел имеет 6 байтов.
возвращаемый тип sizeof
- size_t
, что в 8-битном AVR совпадает с unsigned int
- Как записать последовательность кнопок и сохранить ее в массиве
- Как вернуть значение массива символов в функции Arduino IDE?
- Почему я не могу изменить значения массива, даже если оператор успешно вызван? TFT-сенсорный экран
- Использование массивов, двоичных данных и битового чтения
- Хранение значений широты и долготы в виде символов с заданной точностью
- Как преобразовать строку в шестнадцатеричный массив
- Ввод строки в массив символов
- Матричный дисплей с Arduino UNO (ПРОБЛЕМА)