1

我有一个 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);
4

1 回答 1

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];

当然,这需要您知道数组中有多少个字符。

于 2013-06-19T17:47:30.747 回答