Golang如何将[8]bool类型转换为byte类型?
将长度为8的bool数组转换为byte的Go实现
你可以通过位运算实现这个转换,核心思路是把每个bool值映射为byte的对应二进制位(true对应1,false对应0),再通过移位和或运算组合成最终的byte。
以下是具体实现代码:
package main import "fmt" func ConvertToByte(bools [8]bool) byte { var result byte for i, b := range bools { result <<= 1 // 左移一位,为下一位腾出空间 if b { result |= 1 // 若为true,将当前最低位设为1 } } return result } func main() { mei := [8]bool{true, true, true, true, false, false, false, false} myvar := ConvertToByte(mei) fmt.Printf("转换后的byte值: %d (二进制: %08b)\n", myvar, myvar) // 输出:转换后的byte值: 240 (二进制: 11110000) }
代码说明
- 遍历数组时从索引0到7依次处理,前面的元素对应byte的高位(比如示例中前四个true对应二进制高四位1111)。
- 若需要让数组第一个元素对应byte的低位,只需调整遍历顺序从最后一个元素开始:
func ConvertToByteLSBFirst(bools [8]bool) byte { var result byte for i := 7; i >= 0; i-- { result <<= 1 if bools[i] { result |= 1 } } return result }
内容的提问来源于stack exchange,提问作者BAR
相关产品推荐
相关产品推荐

