2012-11-02 73 views
0

嘿,我試圖讓文本ASCII,然後將其存儲在服務器上,那麼當我拿回來,我想文本解碼回的NSString,因爲它是

我用過的下面的代碼來測試隨機應用程序..但在這裏我有NSdata作爲一個全局變量,所以它工作正常..

問題是我如何獲得值NSString我從服務器中獲取NSData變量,所以我可以將其轉換回我編碼的文本。

.h 

@interface passTestViewController : UIViewController 
{ 
    NSString *text; 
    NSData *d; 
} 

.M

- (IBAction)eButton:(id)sender { 
    text = [NSString stringWithFormat:@"%@%@%@",@"!",[_textField text],@"!"]; 

    d=[[NSString stringWithFormat:@"%@",text] dataUsingEncoding:NSASCIIStringEncoding]; 
    text = [NSString stringWithFormat:@"%@",d]; 

    [_label setText:text]; 
} 

- (IBAction)dButton:(id)sender { 

    NSString *dString = [[NSString alloc] initWithData:d encoding:NSASCIIStringEncoding]; 
    dString = [dString stringByReplacingOccurrencesOfString:@"!" withString:@""]; 
    [_label setText:dString]; 
} 

我需要得到它的NSData。我把它發送到我的服務器通JSON,再後來當我拿回來......我把它作爲一個字符串...我需要的是

NSData *d = stringThatIGetBackFromJson; 

這樣我就可以把它轉換直通

NSString *dString = [[NSString alloc] initWithData:d encoding:NSASCIIStringEncoding]; 

獲取用戶輸入的原始字符串。

而且字符串我從這個獲得編碼後有符號和空格..'<「>」和「」 它不會去通到url所以我所做的就是刪除空格和<>直通

myString = [myString stringByReplacingOccurrencesOfString:@" " withString:@""]; 
myString = [myString stringByReplacingOccurrencesOfString:@"<" withString:@""]; 
myString = [myString stringByReplacingOccurrencesOfString:@">" withString:@""]; 

所以現在我會回來是要去成爲像「40786d61646f6f2131323334216b6d646f616f」號......反正是有解決這個? 來比較我只是檢查編碼的文本,並遵循相同的步驟,然後比較如果isEqualTo,但我想回到文本能夠張貼在應用程序。

+0

恐怕你絕望地困惑。你顯然不明白「編碼」只適用於8位數據 - 一旦一個字符串在NSString中,它就是Unicode。你也不明白,如果你轉儲(或用'%@'格式化)一個NSData對象,你會看到十六進制,而不是字符數據。***任何*** NSData對象都是如此。 (上面的十六進制是「@xmadoo!1234!kmdoao」) –

+0

所以我可以使用正常的十六進制字符串轉換器將其轉換回來..例如:http://stackoverflow.com/questions/6421282/how-to- convert-hex-to-nsstring-in-objective-c。有沒有一種方法可以作爲數據發送......?或任何其他選項進行加密? thnx和sry用於最近的回覆.. –

+0

使用NSString initWithData ...您應該使用原來用於生成數據的相同字符串編碼,但UTF8應該可以在幾乎所有情況下使用。 –

回答

6

嘗試以下方式來的NSString轉換爲NSData的

NSData* data = [yourString dataUsingEncoding:NSUTF8StringEncoding];

NSData* data=[yourString dataUsingEncoding: [NSString defaultCStringEncoding] ];

NSData* data = [yourString dataUsingEncoding:NSUTF8StringEncoding];
data = [data subdataWithRange:NSMakeRange(0, [data length] - 1)];

如果數據不是空值終止

NSString* myString = [[NSString alloc] initWithData:nsDataString 
             encoding:NSUTF8StringEncoding] ; 

如果數據空值終止

NSString* myString = [NSString stringWithUTF8String:[nsDataString bytes]]; 
+0

我需要把它交給NSData。我發送它到我的服務器通過JSON,然後當我得到它回來...我把它作爲一個字符串..我需要的是 NSData * d = stringThatIGetBackFromJson; 所以我可以通過 NSString * dString = [[NSString alloc] initWithData:d編碼:NSASCIIStringEncoding]; 獲取用戶輸入的原始字符串。 –

+0

我編輯了答案\ –

0

嘗試改變NSASCIIStringEncodingNSUTF8StringEncoding

+0

試過了沒有用。 –