Я пытаюсь понять, как преобразовать код NodeJS следующим образом:
const buffer = new Buffer(24);
offset = buffer.writeUInt32BE(this.a, offset);
offset = buffer.writeUInt32BE(this.b, offset);
offset = buffer.writeUInt8(this.c, offset);
offset = buffer.writeUInt16BE(d, e); 1 : 0, offset);
buffer.writeInt8(this.f, offset);
идти.
Я подумал, что мог бы использовать
buffer := make([]byte, 24)
buffer[0] = a
buffer[2] = b
но это не работает
есть ли рекомендуемый способ сделать что-то подобное с Go?
Также: Какова ваша настоящая цель? Вы хотите получить побайтовый эквивалентный вывод?
пожалуйста, предоставьте минимальный воспроизводимый пример вашей попытки, чтобы мы попытались угадать.
Вы должны использовать binary.ByteOrder.
Итак, в вашем случае, используя Big Endian, что-то вроде:
package main
import (
"encoding/binary"
)
func main() {
buffer := make([]byte, 24)
// Uint32
binary.BigEndian.PutUint32(buffer, 1)
binary.BigEndian.PutUint32(buffer[4:], 2)
// Uint8
buffer[8] = 3
// Uint16
binary.BigEndian.PutUint16(buffer[9:], 4)
// Uint8
buffer[13] = 5
}
Что значит "это не работает"? Что не работает? Какую ошибку или другое неожиданное поведение вы наблюдаете?