我正在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

Go相关问答推荐

如何描述OpenAPI规范中围棋的数据类型.JSON?

如何在围棋中从多部分.Part中获取多部分.文件而不保存到磁盘?

为什么没有正确生成这些元组?

如何绕过深层 xml,没有嵌套循环?

用接口来模拟amqp091go的困难

Golang chromedp Dockerfile

在 Windows 11 上运行 go mod tidy 时的 gitlab 权限问题

带有前导零的整数参数被 flag.IntVar 解析为八进制

无法使用带有 422 的 go-github 创建提交 - 更新不是快进

加载 docker 镜像失败

具有两个参数的动态规划:天数和优惠券

类型/ struct 函数的 GoDoc 示例函数

也许在 golang 中包(字符串和字符串类型不匹配)

Go gmail api 快速入门导致本地主机拒绝连接 ERR_CONNECTION_REFUSED

如何通过组合来自不同包的接口来创建接口?

如何 Select 前 N 个元素 Gin-Gorm

从golang中的url加载图像

为什么我不能使用来自 gocloak 中 Login() 的访问令牌在 KeyCloak 中创建新客户端?

通用函数与外部包中的常见成员一起处理不同的 struct ?

Go模板中的浮点除法