【问题标题】:Help with NSString of int's to NSString of ASCII characters?帮助整数的 NSString 到 ASCII 字符的 NSString?
【发布时间】:2011-09-23 03:25:12
【问题描述】:

我已经实现了一些代码来将“文本”的 NSString 转换为 (ASCII) 整数的 NSString,如下所示:

@"Hello" is converted to @"72 101 108 108 111"

但是,我在做相反的事情时遇到了相当大的困难。从一串整数(带空格)开始,然后转换回纯文本字符串。

What I need: @"72 101 108 108 111" must be converted to @"Hello"

我尝试将输入字符串分解为一个 int 数组,遍历它,并反复使用以下内容:

[NSString stringWithFormat:@"%c", decCharArray[i]]

但是,问题在于它将每个特定数字解析为 ASCII,将 7、2、空格、1 等转换。

非常感谢。

【问题讨论】:

  • 看来问题是将字符串转换为整数数组。你能显示那个代码吗?另外,你想做什么?我想这不是正确的事情,除非你只是在学习。

标签: iphone objective-c nsstring ascii int


【解决方案1】:

听起来你有正确的方法。尝试使用[string componentsSeparatedByString:@" "] 在空格处拆分字符串。然后,您可以将它们中的每一个转换为数字,然后再转换回字符串。

【讨论】:

    【解决方案2】:

    它没有真正的魔法。由于您将使用 ASCII,因此将 int 到一个 char 你所要做的就是一个分配,你可能已经知道了:

    char a = 65; /* a contains 'A' */
    

    NSString 有一个非常方便的方法componentsSeparatedByString: 返回一个包含你的数字的字符串数组,你可以得到一个 int 从带有intValue 方法的字符串。因此,您所要做的就是拆分 字符串并遍历组件,将它们的 int 值分配给 char 数组。这是一个执行此操作的示例函数:

    NSString *
    TextFromAsciiCodesString (NSString *string)
    {
        NSArray *components = [string componentsSeparatedByString:@" "];
        NSUInteger len = [components count];
        char new_str[len+1];
    
        int i;
        for (i = 0; i < len; ++i)
            new_str[i] = [[components objectAtIndex:i] intValue];
    
        new_str[i] = '\0';
    
        return [NSString stringWithCString:new_str
                                  encoding:NSASCIIStringEncoding];
    }
    

    还有一个简单的用法,以您的"Hello" 为例:

    NSString *string = @"72 101 108 108 111";
    NSLog(@"%@", TextFromAsciiCodesString(string));
    

    实际上,这有点不同,因为您的示例是 "Hell^K" :-)

    【讨论】:

      【解决方案3】:

      您也可以尝试使用NSStringenumerateSubstringsInRange:options:usingBlock:

      用法

      NSString * hello = @"72 101 108 108 111";
      
      NSMutableString * result = [NSMutableString string];
      [hello enumerateSubstringsInRange:NSMakeRange(0, [data length])
                                options:NSStringEnumerationByWords
                             usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
                                 [result appendString:[NSString stringWithFormat:@"%c", [substring intValue]]];
                             }];
      
      NSLog(@"%@", result);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-23
        • 1970-01-01
        • 1970-01-01
        • 2015-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-05
        相关资源
        最近更新 更多