Переменная binary.LittleEndian
Переменная binary.LittleEndian представляет
порядок байтов little-endian (от младшего к старшему)
для работы с бинарными данными. Она реализует интерфейс
binary.ByteOrder и предоставляет методы для
чтения и записи целых чисел без знака в бинарном
формате. Little-endian используется в архитектурах
процессоров x86 и x86-64, а также во многих протоколах
и форматах данных.
Синтаксис
binary.LittleEndian
Методы
binary.LittleEndian.Uint16(b []byte) uint16
binary.LittleEndian.Uint32(b []byte) uint32
binary.LittleEndian.Uint64(b []byte) uint64
binary.LittleEndian.PutUint16(b []byte, v uint16)
binary.LittleEndian.PutUint32(b []byte, v uint32)
binary.LittleEndian.PutUint64(b []byte, v uint64)
Пример
Давайте прочитаем 16-битное число из среза байтов в формате little-endian:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
b := []byte{0xCD, 0xAB}
res := binary.LittleEndian.Uint16(b)
fmt.Println(res)
}
Результат выполнения кода:
43981
Пример
Давайте запишем 32-битное число в срез байтов в формате little-endian:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
b := make([]byte, 4)
binary.LittleEndian.PutUint32(b, 0x01020304)
fmt.Printf("%x", b)
}
Результат выполнения кода:
"04030201"
Пример
Давайте сравним порядок байтов little-endian и big-endian для 64-битного числа:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
b := make([]byte, 8)
binary.LittleEndian.PutUint64(b, 0x0102030405060708)
fmt.Printf("Little endian: %x\n", b)
binary.BigEndian.PutUint64(b, 0x0102030405060708)
fmt.Printf("Big endian: %x\n", b)
}
Результат выполнения кода:
"Little endian: 0807060504030201"
"Big endian: 0102030405060708"
Смотрите также
-
переменную
binary.BigEndian,
которая представляет порядок байтов big-endian -
переменную
binary.NativeEndian,
которая представляет нативный порядок байтов системы -
функцию
binary.Read,
которая читает структурированные бинарные данные -
функцию
binary.Write,
которая записывает структурированные бинарные данные