You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:55:18