登录
首页 >  Golang >  Go问答

直接从 byte 中读取 uint8 数据

来源:stackoverflow

时间:2024-03-15 21:00:30 376浏览 收藏

如何直接从 []byte 中读取 uint8 数据?使用索引表达式从切片中获取单个 uint8 即可。例如: ```go len := binary.BigEndian.Uint32(b[:4]) id := b[4] // <-- index expression ```

问题内容

如何从 []byte 读取 unit8,而不创建 bytes.buffer。该值已像这样写入缓冲区,

buf := new(bytes.buffer)
binary.write(buf, binary.bigendian, uint32(1))
binary.write(buf, binary.bigendian, uint8(1))
b := buf.bytes()

解码时,可以轻松地对 uint32 进行解码,如下所示...

len := binary.bigendian.uint32(b[:4])

但是对于 uint8,检索我能想到的值的唯一方法是创建一个缓冲区,然后读取第一个字节,

buf := new(bytes.Buffer)
_, err := buf.Write(b[4:5])
// error handling ...
id = buf.ReadByte()

encoding/binary pkg 中似乎没有用于 uint8 值检索的方法。我想这背后可能有一些很好的理由。

问题:是否有其他方法可以从 []byte 读取 uint8 而不创建 buffer??


解决方案


使用 index expression 从切片中获取单个 uint8

len := binary.BigEndian.Uint32(b[:4])
id := b[4]  // <-- index expression

请注意,byteuint8alias

理论要掌握,实操不能落!以上关于《直接从 byte 中读取 uint8 数据》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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