【问题标题】:How to set bits of byte array如何设置字节数组的位
【发布时间】:2020-11-10 22:32:28
【问题描述】:

我正在尝试使用位创建自定义字节数组。这意味着我想设置字节数组的位。 这是演示:

bits := []int{ 0,0,0,0,0,0,0,0, 1,0,0,0,0,0,0,1 }

func ToByteArray(in []int) ([]byte,error){
    out := make([]byte,len(in)/8,len(in)/8)
    if len(in) == 0 || len(in)%8 != 0{
        return out,fmt.Errorf("input array is not dividable by 8")
    }
    for i:=0; i < len(in); i++{
        cell := i/8
        pos := i%8
        //cant assign shift to byte
        out[cell] |= in[i] << pos
    }   
    return out,nil
}

spew.Dump( ToByteArray(bits) )

我试图将移位分配给一个字节,但它不适用。如何从 0 和 1 的整数数组创建字节数组?

【问题讨论】:

  • 关于术语的注释:您的代码中根本没有任何数组。你只有切片。

标签: arrays go binary boolean bit


【解决方案1】:

移位的结果是整数,不是字节:

 out[cell] |= byte(in[i] << pos)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多