我正在解析一个文件,文件是逐字节读取的,我有关于哪个字节代表文件的哪个部分的指令。
订单文件:
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转换为整数以便使用该值?
1条答案
按热度按时间a1o7rhls1#
你想使用encoding/binary.Read而不是直接调用Read。
(also你需要知道你的数据在文件中是big-endian还是little-endian,并选择合适的字节顺序)。二进制包将为你解码。