iOS蓝牙开发--异或校验

与某一个值异或校验

/**

 @param contentData 需要校验的内容
 @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;
}

异或校验(每一字节分别异或)

/**
 异或校验(每一字节分别异或)

 @return 校验值
 */
- (int)contentCheckValue {
    Byte *testByte = (Byte *)[self bytes];
    int checksum = 0;
    for(int i=0; i<[self length]; i++) {
        checksum ^= testByte[i];
    }
    return checksum;
}

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

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,172评论 6 13
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 1好:目标市场 今天将目标市场的客户进行了梳理,了解所在区域的火锅品牌有多少,品牌旗下的店面有多少,属于全...
    8f9514241cc4阅读 109评论 0 1
  • 嘿嘿嘿
    方脑壳ing阅读 161评论 0 0
  • 我把今天作为一个新的开始,因为今天上午参加了你们学校的家长开放日,跟你一起去学校,跟你一起上课! 今天我们去的比平...
    恒宝持之以恒阅读 154评论 0 0