我有一个函数返回我的NSData里面有十六进制: 例如:
NSData *temp = <000b4631 32202835 2047487a 2901088c 129824b0 48606c03 01a1070a >
现在这些是十六进制值,我需要将它们打印出来。
x = 00
y = 0b
z = 46 31
获取它们的理想方法是将它们转换为char数组,然后我可以将某些结构映射/类型转换为数组并读出我想要的内容。我如何将此NSData转换为char数组?
任何其他建议/最佳做法?
答案 0 :(得分:2)
我在NSData上有一个类别https://github.com/Machx/Zangetsu/blob/master/Source/NSDataAdditions.m
-(NSString *)cw_hexString {
NSUInteger capacity = [self length] * 2;
NSMutableString *stringBuffer = [NSMutableString stringWithCapacity:capacity];
const unsigned char *dataBuffer = [self bytes];
for (NSUInteger i = 0; i < [self length]; ++i) {
[stringBuffer appendFormat:@"%02X ",(NSUInteger)dataBuffer[i]];
}
if (stringBuffer) {
return stringBuffer;
}
return nil;
}