我有字节数组,需要校验和:
let bytes : [UInt8] = [0xC4, 0x03, 0x01, 0x09, 0x03]
我尝试使用此代码,但对我没有帮助:
let result = 256 - dataByte.checksum
extension Data {
var checksum: Int {
return self.map { Int($0) }.reduce(0, +) & 0xff
}
}
我的开发者朋友试图在Kotlin上获取校验和,如下所示:
var checksum = 0
for (i in 0..lastIndex) {
checksum = checksum xor this[i].toInt()
}
return checksum
他得到了0x0B的结果,而我仅在swift 4上才需要相同的结果。
答案 0 :(得分:0)
这就是您XOR
数组中所有值的方式:
let bytes: [UInt8] = [0xC4, 0x03, 0x01, 0x09, 0x03]
let checksum = bytes.reduce(0, ^)
print(checksum) // 204, which equals 0xCC
如Martin R所述,结果为0xCC,而不是0x0B。