将unsigned char转换为NSString

时间:2012-03-07 12:03:20

标签: objective-c

因为我对此很新,所以这个问题可能看起来微不足道,所以请不要用我父母的名字给我打电话......我有unsigned char和NSString..i想要将char值分配给string ...这是代码片段..

NSString *passwordDgst = @"somepassword";
unsigned char passwordDgstchar[CC_SHA512_DIGEST_LENGTH];
CC_SHA512(passwordDgst,
          passwordDgst.length,
          passwordDgstchar);

现在我想将unsigned char passwordDgstchar的值赋给字符串passwordDgst。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

这里有一些问题。该函数采用二进制输入并提供二进制输出。您的代码计算字符串对象的前12个字节的哈希值。您需要先将其转换为NSData。

NSData* input = [passwordDgst dataUsingEncoding: NSUTF8StringEncoding]; // Could use UTF16 or other if you like
unsigned char passwordDgstchar[CC_SHA512_DIGEST_LENGTH];
CC_SHA512([input bytes],
          [input length],
          passwordDgstchar);

passwordDgstchar现在包含原始二进制文件中的digiest。得到它(比如)hex:

NSMutableString* sha512 = [[NSMutableString alloc] init];
for (int i = 0 ; i < CC_SHA512_DIGEST_LENGTH ; ++i)
{
    [sha512 appendFormat: @"%02x", passwordDgstChar[i];
}