【问题标题】:obtaining NSData in hex format以十六进制格式获取 NSData
【发布时间】:2012-02-02 00:22:48
【问题描述】:

我有一个函数返回我的 NSData,里面有十六进制: 例如:

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

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

x = 00
y = 0b 
z = 46 31

获取它们的理想方法是将它们转换为 char 数组,然后我可以将一些结构映射/类型转换到数组并读出我想要的内容。如何将此 NSData 转换为 char 数组?

还有其他建议/最佳做法吗?

【问题讨论】:

  • 您的NSData 对象不包含“内部十六进制”,它只包含一大块字节。十六进制格式只是这些字节的表示。
  • 你试过NSDatabytes方法吗?

标签: cocoa nsarray nsdata


【解决方案1】:

我在 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;
}

【讨论】:

    猜你喜欢
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-09
    • 2013-01-21
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    相关资源
    最近更新 更多