将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];
}
非常感谢杰里米,但你能告诉我如何采取base64编码,而不是十六进制的值?这将是非常有用的:) – Abhrajit 2012-03-09 06:33:53
没有问题..我反正..设计了我自己的功能:) – Abhrajit 2012-03-09 08:45:36