如下:
/// CS校驗(yàn)和方法
/// 校驗(yàn)原理
/// 第一位到校驗(yàn)位之前的所有16進(jìn)制數(shù)據(jù)相加,取最后兩位
/// 如果和校驗(yàn)位相等司恳,則校驗(yàn)通過相嵌;如果不相等,校驗(yàn)失敗
/// 需要校驗(yàn)的數(shù)據(jù)格式:0xAA+0xA1+0xXXXX+CS(校驗(yàn)位)
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
}
測(cè)試
let bytes:[UInt8] = [170, 161, 66, 14, 102, 102, 103]
print(CS_CHECK_DATA(bytes))
true
Program ended with exit code: 0
關(guān)于校驗(yàn)的數(shù)據(jù)格式0xAA+0xA1+0xXXXX+CS(校驗(yàn)位)
,這個(gè)只是我這里需要的數(shù)據(jù)格式叶雹,你們可以指定自己的數(shù)據(jù)格式柄瑰,然后再去修改校驗(yàn)步驟,但是大體思路都是一樣的泌霍。