iOS 关于异或运算

本人开发的都是和蓝牙有关在程序中 经常要用到异或运算

现在给大家罗列出来

1校验位异或 传入16进制串

-(NSData*)getcheckSum_BLE:(NSString*)byteStr

{

intlength = (int)byteStr.length/2;

NSData*data = [selfhexstrToBytes:byteStr];

Byte*bytes = (unsignedchar*)[databytes];

Bytesum =0;

for(inti =0;i

{

sum^=bytes[i];

}

NSString*str = [NSStringstringWithFormat:@"%@%@",byteStr,[selfToHex_BLE:sum]];

//NSLog(@"校验异或的结果%@",[str hexToBytes]);

//NSLog(@"进行校验运算");

return[self  hexstrToBytes:str];

}

-(NSData*)hexstrToBytes:(NSString*)lenstr

{

NSMutableData* data = [NSMutableDatadata];

intidx;

for(idx =0; idx+2<= lenstr.length; idx+=2) {

NSRangerange =NSMakeRange(idx,2);

NSString* hexStr = [lenstrsubstringWithRange:range];

NSScanner* scanner = [NSScannerscannerWithString:hexStr];

unsignedintintValue;

[scannerscanHexInt:&intValue];

[dataappendBytes:&intValuelength:1];

}

returndata;

}


2 和0X5A异或

-(NSData*)yihuo0X5A:(NSMutableData*)dataresult

{

Byte*byte1 = (unsignedchar*)[dataresultbytes];

Bytesum =0x5A;

for(inti =0; i

{

byte1[i]^=sum;

}

NSData*data1 = [[NSDataalloc]initWithBytes:byte1length:dataresult.length];

NSString*string = [[NSStringalloc]initWithBytes:byte1length:dataresult.lengthencoding:NSUTF8StringEncoding];

returndata1;

}

因为在是蓝牙开发所以经常要对data进行拼接所以传入用可变的data

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

推荐阅读更多精彩内容

  • /**ios常见的几种加密方法: 普通的加密方法是讲密码进行加密后保存到用户偏好设置( [NSUserDefaul...
    彬至睢阳阅读 3,031评论 0 7
  • 嘟哝嘟哝:最近接到一个任务:在客户端动态生成RSA密钥对,然后向服务器发送这个密钥对中的公钥字符串,由服务器进行公...
    TimmyR阅读 8,105评论 19 21
  • 我对白头发特别的敏感,当然主要是针对长在我自己脑袋上的白发。 今天早上洗完头发,在镜子里就发现了一颗白得耀眼的头发...
    Kitekiss阅读 659评论 0 2
  • 昨天晚上做了两次梦,前半段各种光怪陆离,后半段各种发泄咆哮…… 还有一点就是:梦到离婚了…… 我想这总算是一次让我...
    汀芷阅读 142评论 0 1
  • 2017年6月13日-6月19日 29周 我现在的任务就是快快长大,多多吸收增加体重。呆在娘亲肚子里暖暖的,我要好...
    colorfulmood阅读 229评论 0 0