2012-02-02 110 views
1

获得的NSData我有一个函数返回NSData的我用十六进制内: 如:十六进制格式

NSData *temp = <000b4631 32202835 2047487a 2901088c 129824b0 48606c03 01a1070a > 

现在,这些是十六进制值,我需要打印出来。

x = 00 
y = 0b 
z = 46 31 

理想的方式,让他们将其转换成字符数组,然后我可以映射/强制转换的一些结构的阵列和读出我想要的东西。我将如何将此NSData转换为char数组?

任何其他建议/最佳实践?

+1

的可能重复(http://stackoverflow.com/questions/7805340/retrieve-nsdata-to- hex-by-length) – 2012-02-02 01:03:12

+2

你的'NSData'对象不包含“hex inside”,它只包含一大块字节。十六进制格式只是这些字节的表示。 – 2012-02-02 01:05:27

+0

你尝试过'NSData'的'字节'方法吗? – CRD 2012-02-02 02:55:42

回答

2

我有NSData的一个大类,[由长度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; 
}