登录
首页 >  Golang >  Go问答

golang()中读取二进制数据

来源:stackoverflow

时间:2024-04-15 17:15:38 217浏览 收藏

从现在开始,努力学习吧!本文《golang()中读取二进制数据》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我需要读取特定的二进制数据格式(https://www.usna.edu/users/oceano/pguth/md_help/html/bt_file_format.htm)。 go 似乎能够很好地做到这一点:

// ...

    f, _ := os.Open(filename)
    var data struct {
        Indicator         [10]byte
        Columns           [4]byte
        Rows              [4]byte
        DataSize          [4]byte
        UTMFlag           [2]byte
        UTMZone           [2]byte
        LeftExtend        [4]byte
        RightExtend       [4]byte
        BottomExtend      [4]byte
        TopExtend         [4]byte
        FloatingPointFlag [2]byte
    }
    _ = binary.Read(f, binary.LittleEndian, &data)
// ...

这似乎有效,因为 spew.dump(data.indicator) 例如返回正确的数据。我不明白的是如何将像 [2]byte 这样的固定切片转换为我实际可以使用的整数。有什么建议吗?


解决方案


声明具有固定大小数字类型的字段:

var data struct {
    Indicator         [10]byte
    Columns           uint32
    Rows              uint32
    DataSize          uint32
    UTMFlag           uint16
    UTMZone           uint16
    LeftExtend        uint32
    RightExtend       uint32
    BottomExtend      uint32
    TopExtend         uint32
    FloatingPointFlag uint16
}

这里我使用了无符号整数,但使用有符号整数也可以。使用与数据匹配的类型。

https://play.golang.org/p/95yqMAYsWVR

好了,本文到此结束,带大家了解了《golang()中读取二进制数据》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>