- 错误原因:
是由于在转换成二进制或者其他进制时,可能包含00,编码是UTF8,所获得的新字符就会为nil。
解决方法:
可以先把二进制转成字符指针或者字节,在截取字符串不必要的字符“<”和“>”,
//将传入的NSData类型转换成NSString并返回
-(NSString *)convertToNSString:(NSData *)data
{
const unsigned char *szBuffer = [data bytes];
if(!szBuffer){
return nil;
}
NSMutableString *strTemp = [NSMutableString stringWithCapacity:[data length]*2];
NSUInteger dataLength = [data length];
for (NSInteger i=0; i < dataLength; ++i) {
[strTemp appendFormat:@"%02lx",(unsigned long)szBuffer[i]];
}
NSString* result = [NSString stringWithString:strTemp];
return result;
}
原文链接:https://blog.csdn.net/yuhao309/article/details/80609701
网友评论