Go语言 基于字节节解析文件

amrnrhlw  于 2023-02-27  发布在  Go
关注(0)|答案(1)|浏览(113)

我正在解析一个文件,文件是逐字节读取的,我有关于哪个字节代表文件的哪个部分的指令。
订单文件:
1.前4个字节是版本
1.接下来的4个字节是一个整数,表示预期的订单数。
1.对于每个订单(从#2开始),4字节整数是订单ID。
为了解析这个,我先加载这个文件:

file, err := os.Open("orders.abc")

version := make([]byte, 4)
c, err := file.Read(version)
fmt.Printf("read %d, version is %d", c, version)

orderCount := make([]byte, 4)
c2, err := file.Read(orderCount)
fmt.Printf("read %d, orderCount is %d", c2, orderCount)

for i := 0; i < orderCount_as_int; i++ {

  orderId := make([]byte, 4)
  c3, err := file.Read(orderId)     
}

有没有更优雅的方法来解析这样的文件?
另外,如何将version/orderCount转换为整数以便使用该值?

a1o7rhls

a1o7rhls1#

你想使用encoding/binary.Read而不是直接调用Read。

var version int32
err := binary.Read(file, binary.LittleEndian, &version)

(also你需要知道你的数据在文件中是big-endian还是little-endian,并选择合适的字节顺序)。二进制包将为你解码。

相关问题