Подтвердить что ты не робот

Предоставляет ли golang htonl/htons?

В программировании на C, когда я хочу отправить целое число по сети, нам нужно использовать htonl() или htons() для преобразования целого из байта хоста к порядку байта сети перед отправкой.

Но в golang я проверил сетевой пакет и не могу найти похожие функции, такие как htons/htonl. Итак, как мне отправить целое число при использовании golang? Мне нужно реализовать htons/htonl  сам?

4b9b3361

Ответ 1

Порядок сетевых байтов просто большой, поэтому вы можете использовать encoding/binary пакет для выполнения кодировки.

Например:

data := make([]byte, 6)
binary.BigEndian.PutUint16(data, 0x1011)
binary.BigEndian.PutUint32(data[2:6], 0x12131415)

В качестве альтернативы, если вы пишете на io.Writer, функция binary.Write() из того же пакета может быть более удобной (опять же, используя значение binary.BigEndian как аргумент order).

Ответ 2

Я думаю, что вы находитесь за ByteOrder в encoding/binary.

A ByteOrder указывает, как преобразовать последовательности байтов в 16-, 32- или 64-разрядные целые числа без знака.