與某一個值異或校驗
/**
@param contentData 需要校驗的內(nèi)容
@return 異或值
*/
- (int)contentCheckValue:(NSData *)contentData {
Byte *testByte = (Byte *)[contentData bytes];
int checksum = 0;
for(int i=0; i<[contentData length]; i++) {
checksum ^= testByte[i];
}
return checksum;
}
與一個固定的值(0x5A)異或
/**
與一個固定的值異或
@return 異或后的值
*/
- (NSData *)xor_0X5A {
NSMutableData *data = [NSMutableData dataWithLength:1];
uint8_t num = 0x5A;
[data replaceBytesInRange:NSMakeRange(0, 1) withBytes:&num];
Byte *byte1 = (Byte *)[self.copy bytes];
Byte *byte2 = (Byte *)[data bytes];
for(int i = 0; i < self.length; i++) {
byte1[i] ^= byte2[0];
}
NSData *data1 = [[NSData alloc] initWithBytes:byte1 length:self.length];
return data1;
}
異或校驗(每一字節(jié)分別異或)
/**
異或校驗(每一字節(jié)分別異或)
@return 校驗值
*/
- (int)contentCheckValue {
Byte *testByte = (Byte *)[self bytes];
int checksum = 0;
for(int i=0; i<[self length]; i++) {
checksum ^= testByte[i];
}
return checksum;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。