如何解决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 举报,一经查实,本站将立刻删除。