В данной инструкции показано, как записать и прочитать любой тип в бинарной форме.
Как записать бинарные данные в Golang?
1. Создайте файл rwbinary.go
со следующим содержимым:
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package main import ( "bytes" "encoding/binary" "fmt" ) func main() { // Запись бинарных значений buf := bytes.NewBuffer([]byte{}) if err := binary.Write(buf, binary.BigEndian, 1.004); err != nil { panic(err) } if err := binary.Write(buf, binary.BigEndian, []byte("Hello")); err != nil { panic(err) } // Чтение записанных значений var num float64 if err := binary.Read(buf, binary.BigEndian, &num); err != nil { panic(err) } fmt.Printf("float64: %.3f\n", num) greeting := make([]byte, 5) if err := binary.Read(buf, binary.BigEndian, &greeting); err != nil { panic(err) } fmt.Printf("string: %s\n", string(greeting)) } |
2. Запустите код через go run rwbinary.go
;
3. Посмотрите на результат в терминале:
1 2 |
float64: 1.004 string: Hello |
Пакет encoding/binary на примерах
Бинарные данные можно записать с помощью использования пакета encoding/binary
. Функция Write
использует Writer
, куда данные должны быть записаны, порядок байтов (BigEndian/LittleEndian
) и наконец, значение, записанное в Writer
.
Аналогично для чтения бинарных данных можно использовать функцию Read
. Обратите внимание, что в процессе чтения данных из бинарного источника нет никакой магии. Вам нужно убедиться, что вы получаете данные из Reader
. Если нет, данные можно привести к любому типу, что соответствует размеру.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»