登录
首页 >  Golang >  Go问答

创建安全的字节类型在 golang 中

来源:stackoverflow

时间:2024-02-21 14:06:17 472浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《创建安全的字节类型在 golang 中》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我是 go 新手,想学习如何读取字节数组并根据我收到的某些字节创建结构。我正在读取一个 bmp 文件,其中包含我想要解析为结构的文件和信息标头。我该如何去做呢?

例如,我想让 bitmapfileheader 的类型为 bitmapfileheader

type BITMAPFILEHEADER struct {
    BfType      uint16
    BfSize      uint32
    BfReserved1 uint16
    BfReserved2 uint16
    BfOffBits   uint16
}

func main() {
    var result []byte

    data, _ := os.ReadFile("assets/courtyard.bmp")
    bitmapFileHeader := data[:14] // how do I parse this into BITMAPFILEHEADER
    bitmapInfoHeader := data[14:54]
    bitmap := data[54:]

    result = append(result, bitmapFileHeader...)
    result = append(result, bitmapInfoHeader...)
    result = append(result, bitmap...)

    os.WriteFile("out/result.bmp", result, 0644)
}

正确答案


正如 reddit 上的某人指出的那样,我可以使用 binary.Read() 将字节数组读入结构中。

type BITMAPFILEHEADER struct {
    BfType      uint16
    BfSize      uint32
    BfReserved1 uint16
    BfReserved2 uint16
    BfOffBits   uint16
}

func main() {
    data, error := os.ReadFile("assets/courtyard.bmp")

    if error != nil {
        panic(error)
    }

    buffer := bytes.NewReader(data)

    var bitmapFileHeader BITMAPFILEHEADER
    binary.Read(buffer, binary.LittleEndian, &bitmapFileHeader)

    fmt.Println(bitmapFileHeader.BfType)
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《创建安全的字节类型在 golang 中》文章吧,也可关注golang学习网公众号了解相关技术文章。

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