Метод binary.ByteOrder.PutUint64
Метод binary.ByteOrder.PutUint64 записывает
64-битное беззнаковое целое число в байтовый срез
длиной не менее 8 байт. Первым параметром метод
принимает байтовый срез ([]byte), в который
будет произведена запись, вторым параметром -
64-битное число (uint64), которое нужно
записать. Важно, чтобы срез имел достаточную
длину, иначе метод вызовет панику.
Синтаксис
byteOrder.PutUint64(b []byte, v uint64)
Пример с BigEndian
Давайте запишем число 1234567890 в байтовый
срез с использованием порядка байтов
binary.BigEndian:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
b := make([]byte, 8)
binary.BigEndian.PutUint64(b, 1234567890)
fmt.Printf("%x\n", b)
}
Результат выполнения кода:
"00000000499602d2"
Пример с LittleEndian
Теперь запишем то же самое число с использованием
порядка байтов binary.LittleEndian:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
b := make([]byte, 8)
binary.LittleEndian.PutUint64(b, 1234567890)
fmt.Printf("%x\n", b)
}
Результат выполнения кода:
"d202964900000000"
Пример с предварительно заполненным срезом
Метод не очищает срез перед записью, он просто перезаписывает первые 8 байт. Давайте проверим это:
package main
import (
"encoding/binary"
"fmt"
)
func main() {
b := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
binary.BigEndian.PutUint64(b, 0x0102030405060708)
fmt.Printf("%x\n", b)
}
Результат выполнения кода:
"0102030405060708090a"
Смотрите также
-
метод
binary.ByteOrder.Uint64,
который читает 64-битное число из байтового среза -
метод
binary.ByteOrder.PutUint32,
который записывает 32-битное число в байтовый срез -
метод
binary.ByteOrder.PutUint16,
который записывает 16-битное число в байтовый срез -
функцию
binary.Write,
которая записывает структуру в бинарном представлении