为了账号安全,请及时绑定邮箱和手机立即绑定

Golang中的0x1是什么意思?

Golang中的0x1是什么意思?

Go
交互式爱情 2023-05-08 14:36:55
我试图理解这段用于返回字节数组前缀为多少个零的代码,但我不确定 0x1 是什么。谷歌搜索没有帮助,但我假设0x1正在返回第一位?这些叫什么?另外,我知道这是一个单独的问题,但我不认为它需要一个新线程:我不太明白为什么我们要在这里嵌套循环、位移和从 7 中减去 j。字节是这样的吗转化为二进制?IdLength := 32func PrefixLen(count [IdLength]byte) int {    for i := 0; i < IdLength; i++ {        for j := 0; j < 8; j++ {            if (count[i]>>uint8(7-j))&0x1 != 0 {                return i*8 + j            }        }    }    return IdLength*8 - 1}
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

0x1只是 number 的十六进制表示法1。你&用一些整数0x1来获得它的最低有效位(最右边)。当使用位掩码时,您写0x1而不是因为从 16 进制转换比从 10 进制转换为 2 进制更容易。1

对于第二个问题,func PrefixLen做的是找到开头连续零的个数count。外层循环每次处理一个字节,内层循环处理不同的位:当 j=0 时,它向右移动 7,从而从左边移出第一个位,当 j=1 时,它移 6 位,得到第二个位,依此类推在。当遇到一位时,1它返回已检查的位数。


查看完整回答
反对 回复 2023-05-08
  • 1 回答
  • 0 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信