iphone - 如何将字节数组转换为 NSString

标签 iphone cocoa-touch xcode nsstring

我正在从 TCP/IP 流读取数据,并成功从预先存在的服务器接收字节数组。我现在正在尝试找到一种将该数组转换为 NSString 的方法。我找到了几个例子,但很难得到我想要的结果。

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];
    //BYTE ARRAY OBTAINED OK!!
    ///////////////////////////////////////////////////////

    //METHOD #1 - Yields 'nil'
    NSString *string = [[NSString alloc] initWithData:data
                                             encoding:NSUTF8StringEncoding];

    ///////////////////////////////////////////////////////
    //METHOD #2 - Log prints OK, but messageString says
    //'invalid' in debugger, and get warnings all over the 
    //place. I know this is wrong, but it semi-works :)

    size_t length=[data length];
    unsigned char aBuffer[length];
    [data getBytes:aBuffer length:length];
    aBuffer[length - 1]=0;

    NSString *messageString =aBuffer; 
    NSLog (@"%s",messageString);

    ///////////////////////////////////////////////////////

}else{
    NSLog(@"No Buffer");
}

请帮忙!非常感谢您提供的任何帮助。

最佳答案

我得到了答案。

我必须改变这个:

NSString *string = [[NSString alloc] initWithData:data
                                         encoding:NSUTF8StringEncoding];

对此:

NSString *string = [[NSString alloc] initWithData:data
                                         encoding:NSASCIIStringEncoding];

关于iphone - 如何将字节数组转换为 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/738674/

相关文章:

ios - 在 64 位 iOS 设备上更改唯一标识符

iphone - 如何以编程方式更改 iPhone 应用程序的默认图标?

iphone - [iPhone]用户无法交互的区域,为什么?

javascript - UIWebView 和 JavaScript

iphone - 构建数据驱动的 UI

iphone - 基于 View 的应用程序中的选项卡栏 - XCode

iphone - 从相机拍照并在 UIImageView 中显示

iphone - 图像裁剪在 iOS 6.0 中无法正常工作。在模拟器中工作正常。

ios - ramotion扩展集合说明不清楚

swift - 如何使用日期选择器通过单击左右箭头来显示前一天/后一天