16进制字符串与NSData,数字,二进制字符串之间的转化

16进制字符串转化为数字:

+ (NSInteger)numberWithHexString:(NSString*)hexString{


    const char *hexChar = [hexString cStringUsingEncoding:NSUTF8StringEncoding];


    int hexNumber;


    sscanf(hexChar,"%x", &hexNumber);


    return  (NSInteger)hexNumber;

}

十六进制字符串转换为二进制字符串:

+ (NSString*)getBinaryByHex:(NSString*)hex {


    NSMutableDictionary *hexDic = [[NSMutableDictionary alloc] initWithCapacity:16];

    [hexDicsetObject:@"0000"forKey:@"0"];

    [hexDicsetObject:@"0001"forKey:@"1"];

    [hexDicsetObject:@"0010"forKey:@"2"];

    [hexDicsetObject:@"0011"forKey:@"3"];

    [hexDicsetObject:@"0100"forKey:@"4"];

    [hexDicsetObject:@"0101"forKey:@"5"];

    [hexDicsetObject:@"0110"forKey:@"6"];

    [hexDicsetObject:@"0111"forKey:@"7"];

    [hexDicsetObject:@"1000"forKey:@"8"];

    [hexDicsetObject:@"1001"forKey:@"9"];

    [hexDicsetObject:@"1010"forKey:@"A"];

    [hexDicsetObject:@"1011"forKey:@"B"];

    [hexDicsetObject:@"1100"forKey:@"C"];

    [hexDicsetObject:@"1101"forKey:@"D"];

    [hexDicsetObject:@"1110"forKey:@"E"];

    [hexDicsetObject:@"1111"forKey:@"F"];


    NSString*binary =@"";

    for(inti=0; i<[hexlength]; i++) {


        NSString *key = [hex substringWithRange:NSMakeRange(i, 1)];

        NSString*value = [hexDicobjectForKey:key.uppercaseString];

        if(value) {


            binary = [binarystringByAppendingString:value];

        }

    }

    return binary;

}

16进制字符串转化为NSData:

-(NSData*) hexToBytes:(NSString*)str {


    NSMutableData* data = [NSMutableData data];


    intidx;


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


        NSRangerange =NSMakeRange(idx,2);


        NSString* hexStr = [strsubstringWithRange:range];


        NSScanner* scanner = [NSScannerscannerWithString:hexStr];


        unsignedintintValue;


        [scannerscanHexInt:&intValue];


        [dataappendBytes:&intValuelength:1];


    }


    returndata;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我一直都很困惑为啥\\转义符在正则表达式里要写成 \\\\ PHP里的正则表达式函数为preg_match() 例...
    L_ed1b阅读 4,310评论 0 0
  • 1. cron表达式定义 Cron表达式是一个字符串,是由空格隔开的6或7个域组成,每一个域对应一个含义(秒...
    然也翰飞阅读 6,537评论 0 2
  • 人非生而知之,乃学而知之。学从何人?吾师也。自小及长,求学种种均随岁月流逝而渐趋模糊,唯数师之音容笑貌,历久弥新,...
    也知也非阅读 3,332评论 9 9
  • 文:耳双生 一直想写写《奇葩说》,这个吸引了我,追了三季的纯粹的互联网节目。 奇葩感受一 这个节目,首先让我强烈感...
    耳双生阅读 4,650评论 11 11
  • 我不可能不会预料到,多年以后的我,在离长沙几十公里的地方,回想起当初来到那座城市的陌生情景,心情是如何的五味杂陈...
    我在等烟雨阅读 3,388评论 1 3

友情链接更多精彩内容