我正在尝试解码一个protobuf编码的消息,因此我需要将protobuf消息中的第一个字节(键)转换为位,以便找到字段号。如何将UInt8(字节)转换为位数组?
伪代码:
伪代码:
private func findFieldNum(from byte: UInt8) -> Int {
//Byte is 0001 1010
var fieldNumBits = byte[1] ++ byte[2] ++ byte[3] ++ byte[4] //concatentates bits to get 0011
getFieldNum(from: fieldNumBits) //Converts 0011 to field number, 2^1 + 2^0 = 3
}
我看到了这个问题,它将一个位数组转换成字节数组。
0b
后缀来写二进制。例如:0b10001111
。 - mohak0b11111000
所表示的)。 - Nikolay Suvandzhievbits()
返回的数组在第0个索引上有第0位,第1个索引上有第1位。这是有语义意义的,对吧?问题在于 print 函数将位数组视为普通列表,并从 0 索引开始打印其元素,而字面值通常是从第7位(MSb)开始编写的。 - mohakArray(bits(fromByte: byte).reversed())
- SoftDesigner