【发布时间】:2019-06-19 17:00:43
【问题描述】:
我必须在 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
所以现在我被阻止添加长度的两位。
感谢阅读
【问题讨论】:
-
在
header,你想给id多少位,给length多少位?如果说id = 0b1111_1111_1111_1111和length = 0b1010_1010,header be应该是什么? -
14 位 id 和 2 位长度 // (Id 14bits =0000 0000 0001 00)(length 2 bits =10) id 永远不会超过 14bits 和长度 2 bits
-
let header: UInt16 = (id << 2) + UInt16(length & UInt8(0b11))怎么样? -
谢谢它的工作!但“0b11”是什么意思?
-
如果你确定长度永远不会超过 3(2 位),那么你可以简单地写 let header: UInt16 = (id
标签: swift header binary byte bit