NSData字节转字符串

3

我获得了类似于以下字节的NSData:

    2d2d2d2d 2d2d2d2d 2d2d2d2d 2d2d2d2d 2d2d2d2d 2d2d2d2d 2d2d2d2d 2d353731 35343039 37373139
    34383437 34303832 30333533 30383232 380d0a43 6f6e7465 6e742d44 6973706f 73697469 6f6e3a20 
    666f726d 2d646174 613b206e 616d653d 2266696c 65223b20 66696c65 6e616d65 
    3d224265 61636820 426f7973 202d2047 6f6f6420 56696272 6174696f 6e732e6d 

我想把它转换成NSString,我尝试了这种方法但是它给了我一个空的字符串:

NSString* postInfo = [[NSString alloc] initWithBytes:[postDataChunk bytes] length:[postDataChunk length] encoding:NSUTF8StringEncoding];

这并不完全相同,但可能会有用:https://dev59.com/o3M_5IYBdhLWcg3wmkeu - Mike K
2
尝试使用NSASCIIStringEncoding,有时UTF8无法转换所有数据。 - rishi
[NSString alloc] initWithBytes:... 应该可以工作。检查您的 NSData 对象,确保它包含您期望的内容。 - sjs
2个回答

8

3

如果您想要追踪NSData对象的实际十六进制值,我使用以下方法:

uint8_t *bytes = (uint8_t*)myNSDataObject.bytes;
NSMutableString *bytesStr= [NSMutableString stringWithCapacity:sizeof(bytes)*2];
for(int i=0;i<sizeof(bytes);i++){
    NSString *resultString =[NSString stringWithFormat:@"%02lx",(unsigned long)bytes[i]];
    [bytesStr appendString:resultString];
}

难道不是调用 -[NSData description] 并删除所有不必要的字符吗? - Julian F. Weinert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接