Swift3 Swift 3异或校验和计算

Swift3 Swift 3异或校验和计算,swift3,xor,Swift3,Xor,我试图计算NMEA语句中的校验和,但无法得到正确的值。这是我的测试代码 import UIKit //$GPGLL,5300.97914,N,00259.98174,E,125926,A*28 let str = "GPGLL,5300.97914,N,00259.98174,E,125926,A" var xor: UInt8 = 0 for i in 0..<str.characters.count { xor = xor ^ Array(str.utf8)[i] }

我试图计算NMEA语句中的校验和,但无法得到正确的值。这是我的测试代码

import UIKit

//$GPGLL,5300.97914,N,00259.98174,E,125926,A*28

let str = "GPGLL,5300.97914,N,00259.98174,E,125926,A"


var xor: UInt8 = 0
for i in 0..<str.characters.count {
    xor = xor ^ Array(str.utf8)[i]
}

print(xor)
导入UIKit
//$GPGLL,5300.97914,北,00259.98174,东,125926,A*28
let str=“GPGLL,5300.97914,N,00259.98174,E,125926,A”
变量xor:UInt8=0
因为我在0。。
校验和很简单,只是$and之间所有字节的异或
*(不包括分隔符本身),并以
十六进制

let str=“$GPGLL,5300.97914,N,00259.98174,E,125926,A*”
变量xor:UInt8=0
因为我在1。。
校验和很简单,只是$and之间所有字节的异或
*(不包括分隔符本身),并以
十六进制

let str=“$GPGLL,5300.97914,N,00259.98174,E,125926,A*”
变量xor:UInt8=0

因为我在1…啊!所以我忘了转换成十六进制。谢谢!啊!所以我忘了转换成十六进制。谢谢!
let str = "$GPGLL,5300.97914,N,00259.98174,E,125926,A*"

var xor: UInt8 = 0
for i in 1..<(str.characters.count - 1){
    xor = xor ^ Array(str.utf8)[i]
}
extension UnsignedInteger {
    var hex: String {
        var str = String(self, radix: 16, uppercase: true)
        while str.characters.count < 2 * MemoryLayout<Self>.size {
            str.insert("0", at: str.startIndex)
        }
        return str
    }
}

let strWithCheckSum = str + xor.hex
print(strWithCheckSum) // GPGLL,5300.97914,N,00259.98174,E,125926,A*28