我正在尝试将长度为 8 的 bool 数组转换为字节。有谁知道怎么做吗?
mei := [8]bool{true, true, true, true, false, false, false, false}
myvar := ConvertToByte(mei)
最佳答案
迭代各个位,边移动边设置。
以下是最高有效位位于数组中索引 0 处的情况的代码:
func ConvertToUint8(mei [8]bool) uint8 {
var result uint8
for _, b := range mei {
result <<= 1
if b {
result |= 1
}
}
return result
}
mei := [8]bool{true, true, true, true, false, false, false, false}
myvar := ConvertToUint8(mei)
fmt.Printf("%b\n", myvar) // prints 11110000
以下是最低有效位位于数组中索引 0 处的情况的代码:
func ConvertToUint8(mei [8]bool) uint8 {
var result uint8
for _, b := range mei {
result >>= 1
if b {
result |= 0b10000000
}
}
return result
}
mei := [8]bool{true, true, true, true, false, false, false, false}
myvar := ConvertToUint8(mei)
fmt.Printf("%08b\n", myvar) // prints 00001111
关于Golang - 将 [8]bool 转换为字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73710132/