我对Swift有点陌生,我试着学习这门语言,同时研究一些通信协议。
协议要求实现两个函数,计算给定值的最高和最低有效字节(MSBLSB),并且输入不能大于int
例如,如果输入是0xFFFF,则它应该返回286(0x11E)表示0x01,返回MSB表示0x1E
我知道有很多其他语言的引用,但无法得到我想要的并重写成LSB
请帮忙
谢谢你

最佳答案

这是一个简单的位操作。
在二进制表示中看到0x11e:

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

所以,你只需要比特移位和比特掩蔽与比特和操作。
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

关于swift - 用Swift计算最高和最低有效字节(MSB,LSB),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39110991/

10-09 18:45