23

文字列の 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 に変換するだけでよいと思いますが、その方法がわかりません。

4

3 に答える 3

56
  1. おそらくこれはエラーではなく、警告です。

  2. 「strlen(str) を CC_Long に変換する必要があるだけですが、その方法がわかりません。」- 明示的な型変換 (型キャスト):(CC_LONG)strlen(str)ですが、これは本当に必要ないと思います。

于 2013-06-09T20:30:34.263 に答える