美文网首页
ios 16进制字符串与 data 互转

ios 16进制字符串与 data 互转

作者: 阳光下的灰尘 | 来源:发表于2021-12-08 14:33 被阅读0次

    ios 16进制字符串转成 data

    - (NSData *)convertHexStrToData:(NSString *)str
    {
        if (!str || [str length] == 0) {
            return nil;
        }
        
        NSMutableData *hexData = [[NSMutableData alloc] initWithCapacity:20];
        NSRange range;
        if ([str length] % 2 == 0) {
            range = NSMakeRange(0, 2);
        } else {
            range = NSMakeRange(0, 1);
        }
        for (NSInteger i = range.location; i < [str length]; i += 2) {
            unsigned int anInt;
            NSString *hexCharStr = [str substringWithRange:range];
            NSScanner *scanner = [[NSScanner alloc] initWithString:hexCharStr];
            
            [scanner scanHexInt:&anInt];
            NSData *entity = [[NSData alloc] initWithBytes:&anInt length:1];
            [hexData appendData:entity];
            
            range.location += range.length;
            range.length = 2;
        }
        return hexData;
    }
    

    ios data 转成 16进制字符串

    -(NSString *)HexStringWithData:(NSData *)data{
        Byte *bytes = (Byte *)[data bytes];
        NSString *hexStr=@"";
        for(int i=0;i<[data length];i++) {
            NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];///16进制数
            if([newHexStr length]==1){
                hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];
            }
            else{
                hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];
            }
        }
        hexStr = [hexStr uppercaseString];
        return hexStr;
    }
    

    相关文章

      网友评论

          本文标题:ios 16进制字符串与 data 互转

          本文链接:https://www.haomeiwen.com/subject/dydtfrtx.html