Swift下字节数组进行CS校验和的验证方法

如下:

/// CS校验和方法
/// 校验原理
/// 第一位到校验位之前的所有16进制数据相加,取最后两位
/// 如果和校验位相等,则校验通过;如果不相等,校验失败
/// 需要校验的数据格式:0xAA+0xA1+0xXXXX+CS(校验位)
func CS_CHECK_DATA(_ bytes:[UInt8]) ->Bool{
    
    guard bytes.count == 7 && bytes[0] == 0xAA && bytes[1] == 0xA1 else {
        return false;
    }
    
    var total = 0
    for item in bytes[0...5] {
        total += Int(item)
        print(total)
    }
    
    let cs = bytes[6].hexString
    let totalHex = String(total,radix: 16)
    return totalHex.suffix(2) == cs
}

测试

let bytes:[UInt8] = [170, 161, 66, 14, 102, 102, 103]
print(CS_CHECK_DATA(bytes))
true
Program ended with exit code: 0

关于校验的数据格式0xAA+0xA1+0xXXXX+CS(校验位),这个只是我这里需要的数据格式,你们可以指定自己的数据格式,然后再去修改校验步骤,但是大体思路都是一样的。

你可能感兴趣的:(Swift下字节数组进行CS校验和的验证方法)