2013-07-11 229 views
0

使用Evernote API,我有一个NSUInteger属性名为hash的对象。对于我正在查看的特定对象,这等于:将散列转换为NSString?

<f5b5444b 33e740b7 f9d49a3b ddb6a39c> 

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

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

给了我这样的:

530049088 

我怎么能正确地转换哈希值,以一个NSString?

+0

Eeeeuuuuughuhh ...你使用的是128位机器吗?或者一个'NSInteger'如何占用16个字节? – 2013-07-11 11:13:12

+0

你想要这个:http://stackoverflow.com/q/7520615/1603072? – Bhavin

+0

@Vin它看起来像。剩下的问题是它是一个NSUInteger,我有。我如何将其转换为'const void *'? – Andrew

回答

3

当您看到输出为“<”8个十六进制数字空间....“>”的输出时,它是记录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方法与上述相反的,如果需要的话。