代码之家  ›  专栏  ›  技术社区  ›  Dutchie432

如何将字节数组转换为nsstring

  •  6
  • Dutchie432  · 技术社区  · 17 年前

    我正在从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");
    }
    

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

    3 回复  |  直到 13 年前
        1
  •  15
  •   Bobrovsky Jesse DeGuire    13 年前

    我得到了答案。

    我不得不改变:

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

    对此:

    NSString *string = [[NSString alloc] initWithData:data
                                             encoding:NSASCIIStringEncoding];
    
        2
  •  4
  •   Chris Lundie    17 年前

    这是错误的:

    [data appendBytes:&buffer length:len];
    

    应该是:

    [data appendBytes:buffer length:len];
    
        3
  •  -1
  •   Andrew Grant    17 年前
    NSString* string = [NSString stringWithUTF8String: data];
    

    显然,请确保您的数据是以空结尾的。