Помогите разобраться с типами char и byte
- Войдите на сайт для отправки комментариев
Чт, 15/10/2020 - 17:41
Доброго дня!
Запутался в типах, вроде char и byte однобайтовые типы, byte беззнаковое, но char хранит символы ASCII и имеет знаковый тип от -128 до 127, так вот данный код:
void setup() { Serial.begin(9600); } void loop() { char с = '\x42'; byte b = '\x42'; Serial.print(с); delay(3000); Serial.print(b); while (1); }
В Serial возвращает "c" как и положено x42 т.е. 'B', но почему b возвращает x36 x36 т.е. 66?
Знаю что обьяснение лежит на поверхности но что то я затупил, поверните моск в нужную сторону pls!!!
а кто вам сказал, что байт можно записывать как '\x42' ? Для числе формат записи - 0x42
а кто вам сказал, что байт можно записывать как '\x42' ? Для числе формат записи - 0x42
Пробовал и так и так, результат один и тот же (:
В строке 9 Вы печатаете символ с кодом x42 - вот и печатается "B"
В строке 11 Вы печатаете число, которое в шестнадцатеричном виде представляется x42, а в десятичном 66 - вот и выводится 66.
Тут всё расписано: https://www.arduino.cc/reference/en/language/functions/communication/serial/print/
Версия этой странички на нашем сайте, по-моему, не совсем верная.
Сырой байт выводится с помощью Serial::write.
Serial::print переводит данные в читаемый человеком вид.
В строке 9 Вы печатаете символ с кодом x42 - вот и печатается "B"
В строке 11 Вы печатаете число, которое в шестнадцатеричном виде представляется x42, а в десятичном 66 - вот и выводится 66.
Тут всё расписано: https://www.arduino.cc/reference/en/language/functions/communication/serial/print/
Версия этой странички на нашем сайте, по-моему, не совсем верная.
Спасибо прибольшое, всё встало на свои места, а то совсем мозги потекли, откуда это 66!