创建二进制 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
我必须在 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