У меня есть следующая схема, которую я пытаюсь достичь в Go.
На данный момент я могу понять, как кодировать / устанавливать биты 6 и 7 из байта 0
// Element ID flag
bytesToSend[0] |= (1 << 7)
//N/S Flag
bytesToSend[0] |= (1 << 6)
Однако я не могу понять, как кодировать 20-битный «номер блока» в Go.
Я действительно думаю, что читать его я буду делать ...
block_num_out := ((int(bytesToSend[0]) & 0x0f) << 16) | (int(bytesToSend[1]) << 8) | (int(bytesToSend[2]))
Моя кодировка, которую я пробовал ...
block_num_in := 343348
bytesToSend[0] |= block_num_in << 16
Но это дает ошибку ...
invalid operation: bytesToSend[0] |= block_num_in << 16 (mismatched types byte and int)
Я также пытался
block_num_in := 343348
bytesToSend[0] |= (byte(block_num_in) << 16) & 0x0f
bytesToSend[1] |= byte(block_num_in) << 8
bytesToSend[2] |= byte(block_num_in)
Есть идеи? Спасибо!