创建二进制 Header

Create a Binary Header

我必须在 16 位上编码两个信息:Id 和长度。

我会详细解释的

例子:

let id: UInt16 = 4 // 0000 0000 0000 0100
let length: UInt8 = 2 // 0000 0010

我想在这个表格上编码。

(Id=0000 0000 0001 00)(Length=10) // 0000 0000 0001 0010

我做了一点改变

let header: UInt16 = id << 2 // 0000 0000 0001 0000

所以现在我无法添加长度的两位。

感谢阅读

如果您确定 id 永远不会超过 0b0011_1111_1111_1111 并且 length 最多 0b0000_0011 那么您可以对 header 这样:

let header: UInt16 = (id << 2) + UInt16(length)

您可以这样查看结果:

let leadingZeros = String(repeating: "0", count: header.leadingZeroBitCount)
print(leadingZeros + String(header, radix: 2))  //0000000000010010