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(校验位),这个只是我这里需要的数据格式,你们可以指定自己的数据格式,然后再去修改校验步骤,但是大体思路都是一样的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。