2011-06-26 46 views
1

我已經實現了一些代碼的轉換NSString的「文本」來的(ASCII)整數,一個NSString像這樣:幫助將NSString的int轉換爲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等。

感謝提前一噸。

+0

看來問題是將字符串轉換爲整數的數組。你可以顯示該代碼嗎?另外,你想做什麼?我想這不是正確的,除非你只是在學習。 – djromero

回答

0

有上沒有真正的魔法。既然你要使用ASCII,到INT 轉換爲焦炭所有你需要做的是一個任務,你可能已經知道:

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

的NSString有一個非常方便的方法是componentsSeparatedByString:將 返回一個包含您的數字的字符串數組,您可以從intValue方法的字符串中獲得int 。因此,您所要做的就是將字符串分割爲 ,並遍歷將其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" :-)

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