Переменная binary.NativeEndian
Переменная binary.NativeEndian предоставляет доступ к порядку байт,
который используется в текущей системе. Она возвращает значение типа
binary.ByteOrder, которое может быть либо binary.LittleEndian,
либо binary.BigEndian, в зависимости от архитектуры процессора.
Эта переменная особенно полезна при работе с бинарными данными, когда
важно знать, как интерпретируются многобайтовые числа.
Синтаксис
binary.NativeEndian
Пример
Давайте проверим, какой порядок байт используется в текущей системе:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
if binary.NativeEndian == binary.LittleEndian {
fmt.Println("Система использует little-endian")
} else if binary.NativeEndian == binary.BigEndian {
fmt.Println("Система использует big-endian")
}
}
Результат выполнения кода:
"Система использует little-endian"
Пример
Давайте используем binary.NativeEndian для записи числа
в байтовый слайс с учетом порядка байт текущей системы:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
value := uint32(0x12345678)
bytes := make([]byte, 4)
binary.NativeEndian.PutUint32(bytes, value)
fmt.Printf("Число %x в байтах: %x\n", value, bytes)
}
Результат выполнения кода на little-endian системе:
"Число 12345678 в байтах: [78 56 34 12]"
Пример
Давайте прочитаем число из байтового слайса, используя порядок байт текущей системы:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
bytes := []byte{0x78, 0x56, 0x34, 0x12}
value := binary.NativeEndian.Uint32(bytes)
fmt.Printf("Байты %x в число: %x\n", bytes, value)
}
Результат выполнения кода на little-endian системе:
"Байты [78 56 34 12] в число: 12345678"
Смотрите также
-
переменную
binary.BigEndian,
которая представляет порядок байт от старшего к младшему -
переменную
binary.LittleEndian,
которая представляет порядок байт от младшего к старшему -
функцию
binary.Size,
которая возвращает размер данных в байтах -
функцию
binary.Read,
которая читает структурированные бинарные данные