简体   繁体   English

将HEX NSString转换为ASCII NSString

[英]Convert HEX NSString to an ASCII NSString

I got an NSString containing a hex value which I would like to convert in ASCII . 我得到了一个包含十六进制值的NSString,我想将其转换为ASCII How can I do this? 我怎样才能做到这一点?

NSString * hexString = // some value
NSString * asciiString = // ? convert hexString to ASCI somehow

INCORRECT APPROACH THAT I TRIED: 我尝试的方法不正确:

I tried the following approach that I found on a similar question but it did not work for me: 我尝试了在类似问题上发现的以下方法,但对我不起作用:

   NSData *_data = [hexString dataUsingEncoding:NSUTF8StringEncoding];
    NSMutableString *_string = [NSMutableString stringWithString:@""];
    for (int i = 0; i < _data.length; i++) {
        unsigned char _byte;
        [_data getBytes:&_byte range:NSMakeRange(i, 1)];
        if (_byte >= 32 && _byte < 127) {
            [_string appendFormat:@"%c", _byte];
        } else {
            [_string appendFormat:@"[%d]", _byte];
        }
    }
    asciiString = _string; // Still shows the same as before..

this works for me: 这对我有用:

NSString * str = @"312d4555";
NSMutableString * newString = [[NSMutableString alloc] init];
int i = 0;
while (i < [str length]){
    NSString * hexChar = [str substringWithRange: NSMakeRange(i, 2)];
    int value = 0;

    sscanf([hexChar cStringUsingEncoding:NSASCIIStringEncoding], "%x", &value);
    [newString appendFormat:@"%c", (char)value];
    i+=2;
}
NSLog(@"%@", newString);

output is: hello 输出是:你好

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM