我有一个uint_8 []字符数组,我想将它转换为NSString,但我得到了NULL。在这两种类型之间进行转换的正确方法是什么?
// Defined else where as:
uint8_t someValue[8];
someValue不是NULL并且包含一些有效字符
我试过了:
NSLog(@"converted using CString: %@", [NSString stringWithCString:(char const *)someValue encoding:NSUTF8StringEncoding]);
以及:
NSMutableData *data = [[NSMutableData alloc] init];
[data appendBytes:someValue length:sizeof(someValue)];
converted = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"converted using NSData: %@", converted);
答案 0 :(得分:2)
使用:
[NSString stringWithCString:(char const *)someValue encoding:NSUTF8StringEncoding];
仅在someValue
数组中存在空终止符时才有效。
您的其他解决方案无法正常工作,因为sizeof(someValue)
未返回数组中的字符数,它会返回uint8_t
指针的大小。
您可以使用:
NSUInteger len = ... // the actual number of characters in someValue
NSString *str = [[NSString alloc] initWithBytes:someValue length:len encoding:NSUTF8StringEncoding];
当然,这需要你知道数组中确实有多少个字符。