Я пытаюсь выяснить серийную программу с C++. Я отправляю массив char, который состоит из нескольких uint8_t и нескольких uint16_t, которые я пытаюсь разделить и отправить.Unsigned int conversion C++
char buf[3];
uint16_t var=1500;
Какая разница (если таковая имеется) между ними:
buf[0]= var & 0xFF; buf[1]= var >> 8;
и
buf[0]= (uint8_t)(var & 0xFF); buf[1]= var >> 8;
Другой конец ожидает 16bit чисел с LSB первого и по какой-то причине я просто не» Думаю, я получаю ожидаемую серийную запись. Я знаю, что существует множество причин, которые могут произойти, но я просто пытаюсь обвести вокруг себя концепцию.
В чем разница? Одна из строк содержит C-стиль для 'uint8_t', а другой - нет. На какой вопрос вы действительно спрашиваете? –
Может ли этот «другой конец» использовать другую консистенцию, чем отправитель? – orphen
Мне любопытно, почему вы делаете 'var & 0xff'. Разве неявное/явное литье уже обрезает наиболее значимые биты? –