为了账号安全,请及时绑定邮箱和手机立即绑定

Golang - 将 [8]bool 转换为 byte

Golang - 将 [8]bool 转换为 byte

Go
慕的地10843 2023-02-14 15:39:36
我正在尝试将长度为 8 的 bool 数组转换为一个字节。任何人都知道如何?mei := [8]bool{true, true, true, true, false, false, false, false} myvar := ConvertToByte(mei)
查看完整描述

3 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

遍历位,移动和设置。


下面是最高有效位在数组中索引 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


查看完整回答
反对 回复 2023-02-14
?
忽然笑

TA贡献1806条经验 获得超5个赞

func ConvertToByte(bits [8]bool) byte {

    var b byte

    for _, bit := range bits {

        b <<= 1

        if bit {

            b |= 1

        }

    }

    return b

}


查看完整回答
反对 回复 2023-02-14
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

只是有点小题大做。遍历数组:


func boolsToByte( flags [8]bool ) (b byte) {

    mask := byte(0x80)

    for _, f := range flags {

        if f {

            b |= mask

        }

        mask >>= 1

    }

    return b

}



查看完整回答
反对 回复 2023-02-14
  • 3 回答
  • 0 关注
  • 439 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号