我有以下字节片,我需要从中提取位并将它们放置在[] int中,因为我打算稍后再获取各个位值。我很难弄清楚该怎么做。
下面是我的代码
data := []byte{3 255}//binary representation is for 3 and 255 is 00000011 11111111
我需要的是一点点-> [0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1]
[0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1]
我试过了
strconv.FormatUint
panic: runtime error: index out of range
fmt.Printf
我需要在这里使用移位运算符吗?任何帮助将不胜感激。
一种方法是遍历字节,并使用第二次循环逐位移位字节值,并使用位掩码测试位。并将结果添加到输出切片。
这是它的实现:
func bits(bs []byte) []int { r := make([]int, len(bs)*8) for i, b := range bs { for j := 0; j < 8; j++ { r[i*8+j] = int(b >> uint(7-j) & 0x01) } } return r }
测试它:
fmt.Println(bits([]byte{3, 255}))
输出(在Go Playground上尝试):
[0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1]