我正在尝试使用以下代码将NSString
转换为char*
:
char *key = (char*) calloc(kCCKeySizeAES128 + 1, sizeof(char));
[keyString getCString:key maxLength:(kCCKeySizeAES128 + 1) encoding:NSUTF8StringEncoding];
char* cstring = [keyString cStringUsingEncoding:NSUTF8StringEncoding];
int i;
for (i = 0; i < (kCCKeySizeAES128 + 1); ++i)
{
NSLog(@"MDO::key[%d] = %d", i, (int)key[i]);
NSLog(@"MDO::cstring[%d] = %d", i, (int)cstring[i]);
}
但是,当我运行它时,key
数组的内容全部为0,而cstring
包含正确的值。我做错了什么?
答案 0 :(得分:0)
我对maxLength
参数的解释方式错了。我认为这意味着“无论原始字符串有多长,都将”最多maxLength
个字符复制到数组中。“那是错的。 keyString
超过kCCKeySizeAES128 + 1
,因此该方法返回NO
,key
数组仍然归零。解决方案是使用与原始字符串长度匹配的maxLength
。