【问题标题】:switch endianness when reading binary file读取二进制文件时切换字节顺序
【发布时间】:2016-10-22 01:41:59
【问题描述】:

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

【问题讨论】:

    标签: go binary


    【解决方案1】:

    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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      相关资源
      最近更新 更多