Метод binary.ByteOrder.Uint32
Метод binary.ByteOrder.Uint32 преобразует срез байтов длины 4 в 32-битное целое число без знака. Метод принимает один параметр - срез байтов []byte, из которого нужно прочитать число. Возвращает значение типа uint32. Порядок байтов (little-endian или big-endian) зависит от того, экземпляр какого типа вызывается - binary.LittleEndian или binary.BigEndian. Метод предполагает, что срез содержит как минимум 4 байта, иначе возникнет паника.
Синтаксис
binary.BigEndian.Uint32(data []byte) uint32
binary.LittleEndian.Uint32(data []byte) uint32
Пример
Давайте прочитаем 32-битное число из байтового среза в формате big-endian:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
data := []byte{0x12, 0x34, 0x56, 0x78}
res := binary.BigEndian.Uint32(data)
fmt.Println(res)
}
Результат выполнения кода:
305419896
Пример
Давайте прочитаем 32-битное число из байтового среза в формате little-endian:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
data := []byte{0x12, 0x34, 0x56, 0x78}
res := binary.LittleEndian.Uint32(data)
fmt.Println(res)
}
Результат выполнения кода:
2018915346
Пример
Давайте прочитаем 32-битное число из байтового среза, полученного из сетевого пакета:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
// Сетевой порядок байтов обычно big-endian
packet := []byte{0x00, 0x00, 0x03, 0xE8}
res := binary.BigEndian.Uint32(packet)
fmt.Println(res)
}
Результат выполнения кода:
1000
Пример
Давайте прочитаем 32-битное число из байтового среза, полученного из файла с little-endian порядком:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
// Данные из файла, записанные в little-endian
data := []byte{0xFF, 0xFF, 0xFF, 0x7F}
res := binary.LittleEndian.Uint32(data)
fmt.Println(res)
}
Результат выполнения кода:
2147483647
Смотрите также
-
метод
binary.ByteOrder.Uint16,
который читает 16-битное число из байтового среза -
метод
binary.ByteOrder.Uint64,
который читает 64-битное число из байтового среза -
метод
binary.ByteOrder.PutUint32,
который записывает 32-битное число в байтовый срез -
функцию
binary.Read,
которая читает структурированные данные из io.Reader