今天将给大家带来《golang - 将布尔值转换为字节》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!
问题内容
我正在尝试将长度为 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
func ConvertToByte(bits [8]bool) byte {
var b byte
for _, bit := range bits {
b <<= 1
if bit {
b |= 1
}
}
return b
}
好了,本文到此结束,带大家了解了《Golang - 将布尔值转换为字节》,希望本文对你有所帮助!