我是Swift
的新手并尝试学习语言并同时处理某些通信协议。
该协议需要实现两个函数来计算给定MSB
值的最高和最低有效字节(LSB
,int
),并且输入不能大于0xFFFF
。
例如,如果输入为286(0x11E)
,那么它应返回0x01
MSB
并返回0x1E
LSB
。
我知道有很多其他语言的参考文献,但无法得到我想要的内容并重写为Swift
。
请帮助
谢谢
答案 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