尝试使用二进制记录解析文件。每条记录的第一个字节告诉您每条记录的字节顺序。从理论上讲,字节序可以在记录之间改变。如何从binary.BigEndian切换到binary.LittleEndian。我是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
答案 0 :(得分:2)
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))