iOS获取字符串string的异或值
时间:2019-10-22
本文章向大家介绍iOS获取字符串string的异或值,主要包括iOS获取字符串string的异或值使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface HKXORManager : NSObject + (HKXORManager *)shareManager; /** * 计算异或值 * @param string 需要异或的字符串 * @return 获取异或后的字符串 */ - (NSString *)stringXOR:(NSString *)string; @end NS_ASSUME_NONNULL_END
#import "HKXORManager.h" @implementation HKXORManager + (HKXORManager *)shareManager { static HKXORManager *instance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [[HKXORManager alloc] init]; }); return instance; } - (NSString *)stringXOR:(NSString *)string { if (string.length%2) { string = [NSString stringWithFormat:@"0%@", string]; } NSString *code = @"00"; for (int i=0; i<string.length; i=i+2) { NSString *subString = [string substringWithRange:NSMakeRange(i, 2)]; code = [self pinxCreator:code withPinv:subString]; } return code; } - (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; } @end
原文地址:https://www.cnblogs.com/liuhuakun/p/11720140.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释