登录
首页 >  Golang >  Go问答

Golang:以字节为单位进行位值解析

来源:stackoverflow

时间:2024-03-05 19:51:26 134浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《Golang:以字节为单位进行位值解析》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

我需要解析一个由两个字节组成的网络数据包:第一个由 8 位组成,根据它们的顺序(例如)设置某些标志,第二个是 uint8 (这很简单)

  • 1 - 在线
  • 0 - 未激活
  • 1 - 很漂亮
  • 1 - 很帅
  • 0 - 秃头
  • 0 - 聋子
  • 0 - 静音
  • 0 - 盲目

如何从字节原语解析它?


解决方案


一些用于处理二进制的有用的 go 标准库包:

要从字节中提取单个位,您应该使用按位运算符 - |&>>

For example

package main

import (
    "fmt"
)

func main() {
    v := byte(0xB2)
    if (v >> 4) & 1 == 1 {
        fmt.Println("bit 4 (counting from 0) is set")
    }
}

这通过将字节值向右移动 4 个位置并将 and 移至 1 来检查位 4(位 0 是字节中的最低位)。您可以类似地检查标志值中的其他位。请随意编写一个函数,用参数 n 替换上面示例中的 4,以检查位数 n

您可以在其他 so 答案中找到更多示例,例如 this one 或评论中链接到的 @icza。

今天关于《Golang:以字节为单位进行位值解析》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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