【发布时间】:2013-06-05 12:23:02
【问题描述】:
我有一个生成字符串的 sha256 加密的函数,
函数如下:
-(NSString*)sha256HashFor:(NSString*)input
{
const char* str = [input UTF8String];
unsigned char result[CC_SHA256_DIGEST_LENGTH];
CC_SHA256(str, strlen(str), result);
NSMutableString *ret = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH*2];
for(int i = 0; i<CC_SHA256_DIGEST_LENGTH; i++)
{
[ret appendFormat:@"%02x",result[i]];
}
return ret;
}
现在CC_SHA256(str, strlen(str), result); 的这一行是产生此警告的原因(警告是针对 strlen(str) 变量的)。
Implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'CC_LONG' (aka 'unsigned int')
我猜我只需要将 strlen(str) 转换为 CC_Long,但我不知道该怎么做。
【问题讨论】:
-
(CC_LONG)strlen(str) -
您使用什么样的编译器/工具链和设置?这似乎有点过于迂腐了。
-
顺便说一句,为什么这会被标记为 osx 或自动引用计数……问题中的任何一个都恰好为零。
-
@mah 就像 iOS 编程问题用
xcode标记时一样 - 为什么? 如果 OP 使用 Eclipse 代替真的有关系吗?随便...
标签: objective-c macos