2011-03-12 83 views
1

我想將字節數組轉換爲NSString對象。出於測試目的,我只是試圖將字符串的內容打印到日誌中。Objective-C - 如何將字節數組轉換爲NSString?

這裏就是我的了:

UInt8 buf[BUFSIZE]; 
CFIndex bytesRead = CFReadStreamRead(stream, buf, BUFSIZE); 
if (bytesRead > 0) { 
NSString *serverText = [[NSString alloc] initWithBytes:buf 
               length:(NSUInteger)BUFSIZE 
               encoding:NSASCIIStringEncoding]; 
NSLog("%@",serverText); 
[serverText release]; 

我試圖用initWithBytes初始化新NSString和存儲這serverText。我可以在調試器中看到serverText的值是「無效地址」。我是Objective-C的新手,但我認爲這意味着工廠方法並不成功。

緩衝區包含數據。有人可以幫我嗎?

謝謝..

+0

我認爲這可能是該字符串的內容。 – Robin 2011-03-12 07:29:49

+4

'init'方法中使用的'length:'應該是'bytesRead',而不是'BUFSIZE'。 – 2011-03-12 07:53:44

+0

@Dave DeLong - 這可能不是一個壞主意。但我仍然無法弄清楚如何讀取一個字節數組以字符串在可可touch/obj-c – Nick 2011-03-12 20:17:26

回答

7

這裏是我想出了:

NSData *data = [[NSMutableData alloc] init]; 
      uint8_t buffer[1024]; 
      unsigned int len = 0; 

      len = [(NSInputStream *)stream read:buffer maxLength:1024]; 

      if(len > 0) 
      { 
       [data appendBytes:&buffer length:len]; 
      } 
      NSString *serverText = [[NSString alloc] 
            initWithData:data 
            encoding:NSASCIIStringEncoding]; 

      NSLog(@"%@", serverText); 
+0

+1不要忘記'釋放'''data'和'serverText'對象。 – 2011-03-13 04:26:49