将unsigned char转换为NSString

问题描述:

因为我对这个问题很陌生,这个问题可能看起来很琐碎,所以请不要通过我父母的名字给我打电话......我有unsigned char和NSString ..我想分配char值的字符串...这是代码片段..将unsigned char转换为NSString

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

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

这里有一些问题。该功能需要二进制输入并给出二进制输出。您的代码计算字符串对象的前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现在包含原始二进制文件中的数据。要得到它说(十六进制):

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

非常感谢杰里米,但你能告诉我如何采取base64编码,而不是十六进制的值?这将是非常有用的:) – Abhrajit 2012-03-09 06:33:53

+0

没有问题..我反正..设计了我自己的功能:) – Abhrajit 2012-03-09 08:45:36