【问题标题】:get ascii code from string in xcode for iphone app从 iPhone 应用程序的 xcode 中的字符串获取 ascii 代码
【发布时间】:2012-02-06 22:13:04
【问题描述】:

嘿,关于编写我的第一个 ios 应用程序的几个简单的菜鸟问题。我一直在搜索这里的问题,但它们似乎都解决了比我更高级的问题,所以我很困惑。

(1) 我想要做的就是把一个字符串变成一个代表 ASCII 码的整数数组。换句话说,我想转换:

"This is some string. It has spaces, punctuation, AND capitals."

放入一个包含 62 个整数的数组中。

(2) 如何从 NSArray 中返回一个字符串?

(3) 此外,这些操作在内存或计算时间方面是否昂贵?似乎我们必须在每次迭代时创建一个新变量或其他东西。

我知道如何声明所有变量,并且我假设我在字符串的长度上运行一个循环,并且在每次迭代中,我以某种方式获取字符并将其转换为一个数字,并调用一些内置命令。

感谢您提供的任何帮助或可能有帮助的帖子的链接!

【问题讨论】:

    标签: iphone ios ipad casting ascii


    【解决方案1】:

    如果你想将 ascii 值存储在一个 nsarray 中,它会很昂贵。 NSArray 只能保存对象,因此您必须为每个 ASCII 值创建一个 NSNumber:

    
    unsigned len = [string length];
    NSMutableArray arr = [NSMutableArray arrayWithCapacity:len];
    for (unsigned i = 0; i < len; ++i) {
       [arr addObject:[NSNumber numberWithUnsignedShort:[string characterAtIndex:i]]];
    }
    
    2) 要返回到 NSString,您需要使用 MSMutableString 并将每个字节附加到 NSMutableString。

    说了这么多,如果可以避免的话,我建议你不要使用这种方法。

    更好的方法是使用@EmilioPelaez 的答案。与迭代和连接字符串相比,从内存缓冲区返回到 NSString 既简单又便宜。

    
    NSString * stringFromMemory = [[NSString alloc] initWithBytes:buffer length:len encoding: NSASCIIStringEncoding];
    

    【讨论】:

      【解决方案2】:

      我最终使用了在这里找到的语法。感谢您的帮助

      How to convert ASCII value to a character in Objective-C?

      【讨论】:

        【解决方案3】:

        NSString 有一个获取数组中字符的方法:

        NSString *string = "This is some string. It has spaces, punctuation, AND capitals.";
        
        unichar *buffer = malloc(sizeof(unichar) * [string lenght]);
        
        [string getCharacters:buffer range:NSMakeRange(0, [string length])];
        

        如果你检查 unichar 的定义,它是一个无符号短。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-12
          • 1970-01-01
          • 1970-01-01
          • 2020-06-17
          • 2010-12-13
          • 1970-01-01
          相关资源
          最近更新 更多