РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1198 of 1593 menu

Переменная binary.BigEndian

Переменная binary.BigEndian предоставляет доступ к методам интерфейса ByteOrder для работы с порядком байтов от старшего к младшему (big-endian). Big-endian означает, что самый значимый байт числа записывается первым. Эта переменная часто используется при чтении и записи бинарных данных, особенно при работе с сетевыми протоколами, файловыми форматами и низкоуровневым вводом-выводом.

Синтаксис

binary.BigEndian.Uint16(b []byte) uint16 binary.BigEndian.Uint32(b []byte) uint32 binary.BigEndian.Uint64(b []byte) uint64 binary.BigEndian.PutUint16(b []byte, v uint16) binary.BigEndian.PutUint32(b []byte, v uint32) binary.BigEndian.PutUint64(b []byte, v uint64)

Пример

Давайте прочитаем 16-битное целое число из среза байтов в порядке big-endian:

package main import ( "encoding/binary" "fmt" ) func main() { data := []byte{0x12, 0x34} res := binary.BigEndian.Uint16(data) fmt.Println(res) }

Результат выполнения кода:

4660

В данном примере байты 0x12 и 0x34 интерпретируются как число 0x1234, что в десятичной системе равно 4660.

Пример

Давайте запишем 32-битное число в срез байтов в порядке big-endian:

package main import ( "encoding/binary" "fmt" ) func main() { num := uint32(0x12345678) buf := make([]byte, 4) binary.BigEndian.PutUint32(buf, num) fmt.Printf("%x", buf) }

Результат выполнения кода:

"12345678"

В результате мы получили срез байтов, где старший байт 0x12 идет первым, а младший 0x78 - последним.

Пример

Давайте сравним чтение 64-битного числа в big-endian и little-endian:

package main import ( "encoding/binary" "fmt" ) func main() { data := []byte{0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08} big := binary.BigEndian.Uint64(data) little := binary.LittleEndian.Uint64(data) fmt.Printf("Big-endian: %x\n", big) fmt.Printf("Little-endian: %x\n", little) }

Результат выполнения кода:

"Big-endian: 102030405060708" "Little-endian: 807060504030201"

Как видно из примера, при чтении в big-endian порядок байтов сохраняется, а при чтении в little-endian байты интерпретируются в обратном порядке.

Смотрите также

  • переменную binary.LittleEndian,
    которая предоставляет функции для работы с порядком байтов от младшего к старшему
  • переменную binary.NativeEndian,
    которая предоставляет функции для работы с порядком байтов текущей архитектуры
  • функцию binary.Read,
    которая читает структурированные бинарные данные из ридера
  • функцию binary.Write,
    которая записывает структурированные бинарные данные в ридер
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить