razrab228
@razrab228
зачем тебе знать это?

HEX значение возвращается неправильно, почему?

Здравствуйте! У меня есть проект, в котором есть масивчик:
char values[][6] = {
  {'0xE918', '0x14', '0xE918', '0x49', '0xE918', '0x48'}
};


и при попытке вывести значение в serial:
Serial.println(values[0][0])
показывается только "8". Почему, и как это решить?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему

Потому что Serial.println печатает то, что ты передаёшь ей на вход, а ты передаёшь ей на вход values[0][0] -- это один символ, '8'.

как это решить?

Понять, что ты хочешь напечатать и организовать данные для печати правильным образом. Сейчас определение массива values говорит о полном непонимании того, что происходит. Если ты хотел инициализировать массив кодами символов, то не нужно было брать коды в одиночные кавычки, это превратило их в символьные литералы. Значения типа char не могут вместить больше чем 8 битов, а 0xe918 -- 16-битное число. Если это симовл unicode в кодировке utf-8, то его байты должны идти как отдельные символы. Если ты собираешься печатать отдельные байты закодированных utf-8 символов, то не нужно делать этого функцией println, потому что она вставит символ конца строки после печати каждого символа.
Если ты хотел напечатать шестнадцатеричные значения, ты мог сделать это так:
unsigned int values[][6] = {
  {0xE918, 0x14, 0xE918, 0x49, 0xE918, 0x48}
};
…
Serial.println(values[0][0], HEX);


Короче, начни с того чтобы понять, что ты хочешь напечатать.
Ответ написан
Комментировать
razrab228
@razrab228 Автор вопроса
зачем тебе знать это?
все решилось некоторыми изменениями:
char *Values
ну и также скобки поставил двойные
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы