Swift 中的按位移位数据

问题描述

我有一个数据对象,包含多个字节的信息。对于算法,我需要将此数据向左或向右移动一位。有什么有效的方法可以做到这一点吗?

我厌倦了实现这样的事情,但我认为这是非常无效的解决方案:

fileprivate let LSBofByte: UInt8 = 0x01 // 0000 0001
fileprivate let MSBofByte: UInt8 = 0x80 // 1000 0000

extension Data {
    mutating func leftShiftByteArray() {
        self[0] <<= 1 // Shift first byte
        for i in 1...self.count-1 {
            if (self[i] & MSBofByte) == MSBofByte {
                self[i-1] |= LSBofByte // Carry the leading 1 from current byte to prevIoUs
            }
            self[i] <<= 1 // Shift other bytes
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)