我有一个无符号字符数组,我想将其转换为十六进制 NSString,目前我按以下方式执行:
unsigned char result[16];
// Fill the array
NSString *myHexString = [NSString stringWithFormat: @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
]];
是否有更好的方法内置函数来实现这一目标?
这个怎么样?
NSMutableString *hex = [NSMutableString string];
for (int i=0; i<16; i++)
[hex appendFormat:@"%02x", result[i]];
// And if you insist on having the hex in an immutable string:
NSString *immutableHex = [NSString stringWithString:hex];
您还可以将代码转换为类别以保持良好的状态:
@implementation NSString (Hex)
+ (NSString*) hexStringWithData: (unsigned char*) data ofLength: (NSUInteger) len
{
NSMutableString *tmp = [NSMutableString string];
for (NSUInteger i=0; i<len; i++)
[tmp appendFormat:@"%02x", data[i]];
return [NSString stringWithString:tmp];
}
@end
然后你的代码可以归结为:
unsigned char result[16] = {…};
NSString *hexString = [NSString hexStringWithData:result ofLength:16];
我认为这已经是最好的了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)