Давайте рассмотрим шаг за шагом, что не так:
Предположим,
uint32_t id = 100
Битовое представление идентификатора будет:
00000000 00000000 00000000 01100100
Шаг 1.
Заявление: inputBuffer[0] = (id >> 24) & 0x000000ff;
Фактически вы можете просто упростить это до: (id >> 24)
Результат: inputBuffer[0] = 00000000
Шаг 2.
Заявление: inputBuffer[0] = (id >> 16) & 0x000000ff;
Результат: inputBuffer[1] = 00000000
Шаг 3.
Заявление: inputBuffer[0] = (id >> 8) & 0x000000ff;
Результат: inputBuffer[2] = 00000000
Шаг 4.
Заявление: inputBuffer[0] = (id >> 0) & 0x000000ff;
Результат: inputBuffer[3] = 01100100
// 100
Если вы попытаетесь напечатать inputBuffer
на этом этапе, он не будет ничего печатать, так как первая позиция содержит \0
. Это прекрасно. Вам просто нужно быть осторожным с получателем сообщения.
Получатель:
uint32_t id = (uint32_t)data[0] << 24) |
((uint32_t)data[1] << 16) |
((uint32_t)data[2] << 8) |
((uint32_t)data[3]);
//id == 100