Tôi có một chức năng đó là tạo ra một mã hóa sha256 của một chuỗi,Objective-C chuyển đổi ngầm mất nguyên chính xác (size_t để CC_Long)
Dưới đây là các chức năng:
-(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;
}
Bây giờ dòng này ngay tại đây CC_SHA256(str, strlen(str), result);
là những gì tạo ra cảnh báo này (cảnh báo là cho biến strlen (str)).
Implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'CC_LONG' (aka 'unsigned int')
Tôi đoán tôi chỉ cần chuyển strlen (str) thành CC_Long, nhưng tôi không biết làm cách nào để thực hiện điều đó.
'(CC_LONG) strlen (str)' – mah
Bạn đang sử dụng loại trình biên dịch/chuỗi công cụ và cài đặt nào? Điều này có vẻ giống như một cái gì đó quá mức. –
Nhân tiện, tại sao điều này được gắn thẻ là osx hoặc tự động đếm lại ... chính xác là 0 trong số này nằm trong câu hỏi. – mah