如何设置字节数组的位
How to set bits of byte array
我正在尝试使用位创建自定义字节数组。这意味着我想设置字节数组的位。
这是演示:
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 的整数数组创建字节数组?
移位的结果是整数,不是字节:
out[cell] |= byte(in[i] << pos)
我正在尝试使用位创建自定义字节数组。这意味着我想设置字节数组的位。 这是演示:
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 的整数数组创建字节数组?
移位的结果是整数,不是字节:
out[cell] |= byte(in[i] << pos)