iOS 对两个相等长度的字符串进行异或运算

+ (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;
}

测试数据

pan = @"0000001045670006";

pinv= @"06123456FFFFFFFF";

时间: 2024-10-12 23:34:42

iOS 对两个相等长度的字符串进行异或运算的相关文章

iOS 根据字符串样式、字符串长度计算字符串所占大小

通过Category为NSString添加方法: 1. 根据字符串样式.字符串长度计算字符串所占大小 /** *  @param font     字符串样式 *  @param maxWidth 指定字符串长度 */- (CGSize)sizeWithFont:(UIFont *)font maxWidth:(CGFloat)maxWidth { // 获取文字样式 NSMutableDictionary *attrs = [NSMutableDictionary dictionary]; a

VC++ 在两个程序中 传送字符串等常量值的方法:使用了 WM_COPYDATA 消息(转载)

转载:http://www.cnblogs.com/renyuan/p/5037536.html VC++ 在两个程序中 传递字符串等常量值的方法:使用了 WM_COPYDATA 消息的 消息作用:    在进程间共享数据(内部通过创建内存映射文件) 消息介绍:需要用到的数据结构/类型:typedef struct tagCOPYDATASTRUCT {    ULONG_PTR dwData;    DWORD cbData;    PVOID lpData;} COPYDATASTRUCT,

华为机试—两个任意长度的正数相减

问题描述: 两个任意长度的正数相减,这两个正数可以带小数点,也可以是整数,请输出结果.输入的字符串中,不会出现除了数字与小数点以外的其它字符,不会出现多个小数点以及小数点在第一个字符的位置等非法情况,所以考生的程序中无须考虑输入的数值字符串非法的情况. 详细要求以及约束: 1.输入均为正数,但输出可能为负数: 2.输入输出均为字符串形式: 3.如果输出是正数则不需要带符号,如果为负数,则输出的结果字符串需要带负号 例如:2.2-1.1直接输出为"1.1",1.1-2.2 则需要输出为&

java代码验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数

package com.sangedabuliu.www; import java.util.regex.Matcher; import java.util.regex.Pattern; public class UserReg { /** * 验证用户名,支持中英文(包括全角字符).数字.下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数 * @author www.sangedabuliu.com * @param userName * @return */ public

正则表达式,不匹配多个长度不等字符串

正则表达式,不包含多个长度不等字符串. 因为多数对于零宽断言检测的讲解中并没有对多个不等长字串做过说明,因此这篇文章在此举例. 由于是长度不相等,所以不能用中括号或的方式,而且不进行消费,所以只能是断言检测. 由于是不匹配(不包含)因此是负向,再由于是在所要匹配的字符串之前的检查,因此是后行(相对于正则消费字符串的方向) 因此要使用"零宽负向后行断言检测". 工作中同事遇到问题,如下语句 没色差 没有色差 无色差 色差,有色差 色差太大,别的地方穿了才知道了 哈哈哈色差 色差 目标:匹

js按字节长度截取字符串

直接上代码: /** * 按字节长度截取字符串 * @param {String} str 要截取的字符串 * @param {Number} L 要截取的字节长度,注意是字节不是字符,一个汉字两个字节 */ export const cutStr = (str, L) => { var result = '' var strlen = str.length // 字符串长度 var chrlen = str.replace(/[^x00-\xff]/g, '**').length // 字节长

生成指定长度的字符串

#region 生成指定长度的字符串 2 /// <summary> 3 /// 生成指定长度的字符串,即生成strLong个str字符串 4 /// </summary> 5 /// <param name="strLong">生成的长度</param> 6 /// <param name="str">以str生成字符串</param> 7 /// <returns></re

asp.net截取指定长度的字符串内容

1 /// <summary> 2 /// 用于截取指定长度的字符串内容 3 /// </summary> 4 /// <param name="sString">用于截取的字符串</param> 5 /// <param name="nLength">截取字符串的长度</param> 6 /// <returns>返回截取后的字符串</returns> 7 public

IOS中两个view的切换

在ios中,rootview为PassWordViewController,secondview为SecondViewController,实现在rootview中听过一个跳转按钮实现跳转到secondview中,实现方法如下: 在PassWordViewController.h中添加button的事件 -(IBAction) landButtonPressed:(id) sender; 在PassWordViewController.m中 button的实现事件如下: -(IBAction)