我正在try 将长度为8的布尔数组转换为字节.有人知道怎么回事吗?
mei := [8]bool{true, true, true, true, false, false, false, false}
myvar := ConvertToByte(mei)
我正在try 将长度为8的布尔数组转换为字节.有人知道怎么回事吗?
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