将哈希转换为NSString?

时间:2013-07-11 11:11:24

标签: iphone ios objective-c cocoa-touch nsstring

使用Evernote API,我有一个具有名为hash的NSUInteger属性的对象。对于我正在查看的具体对象,这等于:

<f5b5444b 33e740b7 f9d49a3b ddb6a39c>

我想将其转换为NSString。这样做:

[NSString stringWithFormat:@"%d", noteResource.hash]

给我这个:

530049088

我怎样才能正确地将哈希值转换为NSString?

1 个答案:

答案 0 :(得分:3)

当您看到输出为“&lt;”时8个十六进制数字空间....“&gt;”,它是记录NSData对象(NSLog(@"%@", myDataObject);)的结果。所以我相信你拥有的不是NSUInteger,而是NSData *对象。

没有内置方法在字符串和数据之间进行转换,您需要在代码中执行此操作:

- (NSString *)dataToString:(NSData *)data
{
    NSUInteger len = [data length];
    NSMutableString *str = [NSMutableString stringWithCapacity:len*2];
    const uint8_t *bptr = [data bytes];

    while(len--) [str appendFormat:@"%02.2x", *bptr++];

    return str;
}

如果这样做,你可以编写自己的stringToData方法,如果需要,可以反转上面的内容。