【问题标题】:Convert HEX NSString to an ASCII NSString将 HEX NSString 转换为 ASCII NSString
【发布时间】:2015-10-30 17:41:58
【问题描述】:

我得到一个包含 十六进制值 的 NSString,我想将其转换为 ASCII。我该怎么做?

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

我尝试的方法不正确:

我尝试了在similar question 上找到的以下方法,但它对我不起作用:

   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..

【问题讨论】:

    标签: ios objective-c nsstring hex ascii


    【解决方案1】:

    这对我有用:

    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);
    

    输出是:你好

    【讨论】:

    • "hello" 在 UTF-8 中是 @"68656c6c6f"
    猜你喜欢
    • 2012-11-09
    • 2011-11-11
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多