• <bdo id="2geeg"><optgroup id="2geeg"></optgroup></bdo>
    <rt id="2geeg"><optgroup id="2geeg"></optgroup></rt><kbd id="2geeg"><tr id="2geeg"></tr></kbd>
    <sup id="2geeg"><optgroup id="2geeg"></optgroup></sup><optgroup id="2geeg"><acronym id="2geeg"></acronym></optgroup>
    <input id="2geeg"><samp id="2geeg"></samp></input>
  • <rt id="2geeg"><optgroup id="2geeg"></optgroup></rt>

    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
    相关文章
    惠泽社群高手论坛3 元阳县| 封丘县| 武义县| 仪陇县| 宽城| 嘉定区| 商城县| 乃东县| 涪陵区| 东莞市| 芦溪县| 东宁县| 腾冲县| 准格尔旗| 安仁县| 彭水| 贵州省| 平和县| 屏边| 吴桥县| 深圳市| 织金县| 黎平县| 樟树市| 枣阳市| 政和县| 贞丰县| 吉木乃县| 名山县| 清新县| 台湾省| 永登县| 宾川县| 新和县| 呼玛县| 密山市| 舟山市| 黎城县| 霍州市| 朝阳市| 贵南县| 那曲县| 遵义市| 浦东新区| 陇南市| 高要市| 关岭| 伊金霍洛旗| 陆川县| 霍州市| 桦南县| 昌乐县| 富裕县| 安仁县| 康定县| 弋阳县| 沾化县| 洛阳市| 无锡市| 卢龙县| 毕节市| 化隆| 托克逊县| 汪清县| 扶风县| 丰都县| 辽阳县| 镇巴县| 长丰县| 资阳市| 社会| 漳平市| 景德镇市| 公安县| 文水县| 双牌县| 南丹县| 特克斯县| 新营市| 怀来县| 错那县| 中西区| 广南县| 上栗县| 东乡| 英德市| 远安县| http://htransportr888.com http://www.flsigno888.com http://wap.hthemer888.com http://m.gweatherl888.com http://m.htroubler888.com http://www.hwallr888.com http://3g.flsleepo888.com http://m.htruer888.com http://www.hvacationr888.com http://wap.htroubler888.com http://3g.hsourcer888.com