go语言byte切片转bit byte切片里存的是0x01 0x02 0x80等十六进制数,需要转成00000001 00000010八个uint8数字
时间: 2024-12-17 09:39:45 浏览: 12
Go语言中,如果你有一个`byte`类型的切片,里面包含的是二进制表示的十六进制数字,比如`0x01`, `0x02`, 和 `0x80`,你可以通过位操作将其转换为一系列的`uint8`。首先,你需要创建一个新的空`[]uint8`来存储结果,然后遍历原切片,对每个`byte`进行如下操作:
1. 将`byte`转换为`int`,因为二进制形式可以直接和`int`进行按位操作。
2. 对`int`进行按位与(&)操作,将每一位映射到新切片的对应位置。例如,`0x01`对应的就是`0b00000001`,所以`0x01 & 0xFF`会得到`0b00000001`。
3. 将处理后的值添加到新切片。
这是一个示例代码片段:
```go
package main
import (
"fmt"
)
func byteToBits(b byte) []uint8 {
var bits []uint8
for i := 0; i < 8; i++ {
bits = append(bits, uint8(b&(1<<uint(i))))
}
return bits
}
func main() {
input := []byte{0x01, 0x02, 0x80} // 假设这是你的原始切片
output := byteToBits(input)
fmt.Printf("Original: %X\n", input)
fmt.Printf("Converted: [%v]\n", output)
}
```
运行这段代码,你会得到原始切片十六进制形式和转换后的`uint8`数组。
阅读全文