将无符号字符转换为 NSString

Abh*_*jit 1 objective-c

因为我对这个问题很陌生,所以这个问题可能看起来很微不足道,所以请不要用我父母的名字称呼我...我有 unsigned char 和 NSString ..我想将 char 值分配给字符串.. .这是代码片段..

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

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

Jer*_*myP 6

你这里有一些问题。该函数接受二进制输入并给出二进制输出。您的代码计算字符串对象的前 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);
Run Code Online (Sandbox Code Playgroud)

passwordDgstchar 现在包含原始二进制文件中最数字的。将其放入(例如)十六进制:

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