【问题标题】:Convert hexa to NSString将十六进制转换为 NSString
【发布时间】:2012-06-16 06:38:54
【问题描述】:

我有这个字符串

NSString * str = @ "01 00 00 41 8B 00 01 00 00 40 BC 00 01 00 00 43 0D 00";

我尝试用这个函数将它转换为 NSacii

- (NSString *)hexToString:(NSString *)string {
    NSMutableString * newString = [[NSMutableString alloc] init];
    NSScanner *scanner = [[NSScanner alloc] initWithString:string];
    unsigned value;
    while([scanner scanHexInt:&value]) {
        [newString appendFormat:@"%c",(char)(value & 0xFF)];
    }
    string = [newString copy];
    [newString release];
    return [string autorelease];
}

它工作完美,但是当我想将字符串转换为十六进制时我找不到 00 表示结果为 01 41 8B 01 40 BC 01 43 0D

【问题讨论】:

  • 我知道 ASCII 数组中的 00 是 Null,我可以返回相同的值
  • 这一系列十六进制值显然不是 ASCII 字符串。为什么要尝试将其转换为 ASCII?
  • 当我转换结果时,我想找到与所有 00 相同的十六进制值
  • 我尝试将其转换为 ascii 并写入我的 pdf 文件,因为 pdf 文件

标签: objective-c nsstring hex


【解决方案1】:
- (NSString *)hexToString:(NSString *)string {
    NSMutableString * newString = [[NSMutableString alloc] init];
    NSScanner *scanner = [[NSScanner alloc] initWithString:string];
    unsigned value;
    while([scanner scanHexInt:&value]) {
       if (value==0 )
        {

            [newString appendString:@"\0"];

        }
        else
        {
            [newString appendFormat:@"%c",(char)(value & 0xFF)];
        }
    }
    string = [newString copy];
    [newString release];
    return [string autorelease];
}

【讨论】:

    猜你喜欢
    • 2011-05-15
    • 2017-04-03
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2011-11-02
    相关资源
    最近更新 更多