iOS-字符串进行异或运算

 

异或,英文为exclusive OR,或缩写成xor

异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:
a⊕b = (¬a ∧ b) ∨ (a ∧¬b)
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。

 

使用:

    NSString *str = [ViewController pinxCreator:@”24″ withPinv:@”23″];

    NSLog(@”—%@”,str);

    NSString *str1 = [ViewController pinxCreator:str withPinv:@”23″];

    NSLog(@”—%@”,str1);

 

Log:

2016-03-30 11:41:11.145 testpp[2132:164780] —07

2016-03-30 11:41:11.145 testpp[2132:164780] —24

代码:

+ (NSString *)pinxCreator:(NSString *)pan withPinv:(NSString *)pinv
{
if (pan.length != pinv.length)
{
return nil;
}

const char *panchar = [pan UTF8String];
const char *pinvchar = [pinv UTF8String];

NSString *temp = [[NSString alloc] init];

for (int i = 0; i < pan.length; i++)
{
int panValue = [self charToint:panchar[i]];
int pinvValue = [self charToint:pinvchar[i]];

temp = [temp stringByAppendingString:[NSString stringWithFormat:@”%X”,panValue^pinvValue]];
}
return temp;

}

+ (int)charToint:(char)tempChar
{
if (tempChar >= ‘0’ && tempChar <=’9′)
{
return tempChar – ‘0’;
}
else if (tempChar >= ‘A’ && tempChar <= ‘F’)
{
return tempChar – ‘A’ + 10;
}

return 0;
}

 

标签:
,
分类:iOS开发 | 发布:inzaghi | 评论:0 条 | 发表时间:2016-03-30 11:55
引用:点击这里获取该日志的TrackBack引用地址
上一篇:
下一篇:

发表评论

*

* 绝不会泄露


Design By Inzaghi | 京ICP备16047555号-1