读取二进制文件时切换字节顺序

时间:2016-10-21 17:39:09

标签: go binary

尝试使用二进制记录解析文件。每条记录的第一个字节告诉您每条记录的字节顺序。从理论上讲,字节序可以在记录之间改变。如何从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

1 个答案:

答案 0 :(得分:2)

binary.BigEndianbinary.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))