使用Swift计算最大和最低有效字节(MSB,LSB)

时间:2016-08-23 21:31:17

标签: swift protocols

我是Swift的新手并尝试学习语言并同时处理某些通信协议。

该协议需要实现两个函数来计算给定MSB值的最高和最低有效字节(LSBint),并且输入不能大于0xFFFF

例如,如果输入为286(0x11E),那么它应返回0x01 MSB并返回0x1E LSB

我知道有很多其他语言的参考文献,但无法得到我想要的内容并重写为Swift

请帮助
谢谢

1 个答案:

答案 0 :(得分:2)

这是一个简单的位操作。

以二进制表示形式看到0x11E:

(higher bits are always 0) 0000 0001 0001 1110
                       MSB ^^^^ ^^^^
                       LSB           ^^^^ ^^^^

因此,您只需要按位AND操作进行位移和位屏蔽。

let data = 286
let lsb = data & 0xFF
let msb = (data >> 8) & 0xFF

print(String(format: "lsb=0x%02x, msb=0x%02x", lsb, msb)) //->lsb=0x1e, msb=0x01