繁体   English   中英

如何从NSData正确转换为NSString?

[英]How to convert properly from NSData to NSString?

执行转换后,我得到了奇怪的NSString值。 例如,我有一个值为2(00000010)的字节存储在响应中。 我尝试了NSString initWithData和initWithBytes,但都返回了奇怪的符号(颠倒的问号)。 这是我的代码:

NSString *command1 = [[NSString alloc] initWithData:response encoding:NSASCIIStringEncoding];
NSString *command2 = [[NSString alloc] initWithBytes:[response bytes] length:[response length] encoding:NSASCIIStringEncoding];

NSLog(@"command1: %@", command1);
NSLog(@"command2: %@", command2);

还尝试了NSUTF8StringEncoding,但NSASCIIStringEncoding是正确的,因为数据每个符号编码一个字节。

ASCII不一定是正确的编码。 ASCII仅定义0x000x7F之间的字符。 如果响应是HTTP响应,并且未在HTTP Content-Type标头中指定编码,则默认值为ISO-8859-1,您应使用NSISOLatin1StringEncoding

并且您使用的编码无关紧要:控制字符( 0x00 - 0x1F )不一定是可打印的。

从我正在阅读的内容来看,这就是你想要的:

NSString *stringWithContentsOfBinaryData(NSData *data)
{
    NSMutableString *output;

    int len = [data length];
    uint8_t *bytes = [data bytes];
    for (int i = 0; i < len; i++)
    {
        [output appendFormat:@"%i", bytes[i]];
    } 

    return output;
}

它只是简单地将每个字节转换为它的整数表示并将其连接成一个字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM