2011-06-26 5 views
1

私はそうのように、(ASCII)intのNSStringのに「テキスト」のNSStringのを変換するためにいくつかのコードを実装している:ASCII文字のNSStringにintのNSStringのヘルプ?

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

は、しかし、私は難易度反対のことをやってかなりのを持っています。 intの文字列(空白を含む)から始まり、平文の文字列に変換し直します。

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

Iは、以下のことを反復処理、int配列に入力文字列を分割し、繰り返し使用して試みた:

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

しかし、それに伴う問題は、それが各特定の数字を解析することですASCIIに変換し、7、2、スペース、1などを変換します。

あらかじめお返事ありがとうございます。

+0

文字列をintの配列に変換するのが問題であるようです。そのコードを表示できますか?また、あなたは何をしようとしますか?あなたが学んでいない限り、これは正しいことではないと思います。 – djromero

答えて

0

それには本当の魔法はありません。

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

NSStringのは、非常に便利な方法componentsSeparatedByString:を持っている:あなたが既に知っていることとして、あなたがしなければならないすべては、割り当てであるCHARint型 を変換するには、ASCIIを使用することがありますので、 は数字を含む文字列の配列を返します。intValueメソッドの文字列からのint を得ることができます。したがって、 を文字列に分割し、の値を の文字の配列にの値を代入して繰り返します。なお、ここではない例として機能さ:

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"ました
1

あなたは正しいアプローチをしているように思えます。スペースで文字列を分割するには、[string componentsSeparatedByString:@" "]を使用してください。その後、それらのそれぞれを数値に変換し、文字列に戻すことができます。

0

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