2016-03-04 76 views
-2

我有一些創建字符串的java服務器端代碼(例如Hello world),然後將此字符串轉換爲字節數組,最後發送給iOs客戶端。如何將NSArray轉換爲目標c中的NSString?

我的iOs客戶端使用NSStream來讀取數據並獲取數組。 現在我想從數組中獲取原始字符串。

我該怎麼做?

我試圖將數組轉換爲NSData,然後到NSString,但它失敗。 我也嘗試將數組轉換爲字符串,但它似乎將數組中的數字轉換爲字符串數字而不是我期望的字符串'Hello world'。

+2

什麼是數據樣子的?請發佈您已經嘗試過的代碼。 – ZeMoon

+1

'我的ios客戶端使用NSStream來讀取數據,並獲得數組,如果您發佈字節,您應該得到'NSData'。 –

+0

服務器響應pong消息json格式:{「type」:「PONG」,「content」:[52,55,56,55,55,51,48,51,53]},當然這個json會轉換爲字節數組發送到ios客戶端。使用代碼:uint8_t dataArr [len]; [_inputStream read:dataArr maxLength:len]; NSData * data = [NSData dataWithBytes:dataArr length:len];獲取數據,並使用json serialize來獲取類型是'PONG',而內容是一個數組。現在我想將數組轉換爲一個字符串。 – fcbflying

回答

0

您應該將您的JSON更改爲這樣:{"type":"PONG","content":"478773035"]}

然而,這樣的事情可能會工作:

uint8_t * const buffer = (uint8_t*)calloc(1, [ bytes count ] + 1) 
assert(buffer) ; 

size_t index = 0 ; 
for (NSNumber * byteNumber in bytes) 
{ 
    buffer[ index ] = (uint8_t)[ byteNumber unsignedCharValue ] ; 
    ++index; 
} 

NSString * const string = [ NSString stringWithUTF8String:buffer ]; 

free((void*)buffer); 
+0

你的'字節'的類型是什麼?我使用[字典objectForKey:@「content」]得到的值是NSArray。 – fcbflying

+0

它是'NSArray *'。但是,再次,爲什麼把你的字符串作爲字節數組與字符串? – nielsbot

+0

服務器已運行了很長時間,web瀏覽器和android客戶端工作正常,我只是做ios客戶端開發,所以我必須遵循服務器規則。 – fcbflying

相關問題