переключать порядковый номер при чтении двоичного файла

#go #binary

#Вперед #двоичный

Вопрос:

Пытаюсь проанализировать файл с двоичными записями. Первый байт каждой записи сообщает вам порядковый номер каждой записи. Теоретически порядковый номер может меняться между записями. Как я могу переключиться с двоичного.BigEndian в двоичный.Маленький порядковый номер. Я полный новичок в Golang…

 package main

import (
    "fmt"
    //"time"
    "reflect"
    "encoding/binary"
)

func main() {
    var b byte = 0xe2
    e := binary.BigEndian
    switch b {
    case 0xe2:
        e = binary.BigEndian
    default:
        e = binary.LittleEndian
    }
    fmt.Println(reflect.TypeOf(e))
}
  

tmp/sandbox356311773/main.go:17: cannot use binary.LittleEndian (type binary.littleEndian) as type binary.bigEndian in assignment

Ответ №1:

binary.BigEndian и binary.LittleEndian являются обеими реализациями binary.ByteOrder . Объявите e как тип binary.ByteOrder , и вы сможете переключаться между двумя реализациями.

https://play.golang.org/p/GzL_2q5wvn

 var b byte = 0xe2
var e binary.ByteOrder
switch b {
case 0xe2:
    e = binary.BigEndian
default:
    e = binary.LittleEndian
}
fmt.Println(reflect.TypeOf(e))