ios – 如何转换使用CC_SHA1方法,以便它可以在64位系统中使用

ios – 如何转换使用CC_SHA1方法,以便它可以在64位系统中使用,第1张

概述我正在转换我的应用程序在64位系统上工作,我一直试图正确使用内置的CC_SHA1方法. 我收到警告: Implicit conversion loses integer precision: ‘NSUInteger’ (aka ‘unsigned long’) to ‘CC_LONG’ (aka ‘unsigned int’) 尝试在CC_SHA1方法中传递:data.length. data.l 我正在转换我的应用程序在64位系统上工作,我一直试图正确使用内置的CC_SHA1方法.

我收到警告:

Implicit conversion loses integer precision: ‘NSUInteger’ (aka ‘unsigned long’) to ‘CC_LONG’ (aka ‘unsigned int’)

尝试在CC_SHA1方法中传递:data.length.

data.length是NSUInteger

CC_SHA1方法定义是:

extern unsigned char *CC_SHA1(const voID *data,CC_LONG len,unsigned char *md)

其中CC_LONG是32位无符号整数.

如何更改它以使用CC_LONG64?

typedef uint64_t CC_LONG64;

这是我得到上述警告的转换方法:

+(Nsstring*)sha1:(Nsstring*)input{    const char *cstr = [input cStringUsingEnCoding:NSUTF8StringEnCoding];    NSData *data = [NSData dataWithBytes:cstr length:input.length];    uint8_t digest[CC_SHA1_DIGEST_LENGTH];    CC_SHA1(data.bytes,data.length,digest);    NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];    for(NSInteger i = 0; i < CC_SHA1_DIGEST_LENGTH; i++)        [output appendFormat:@"%02x",digest[i]];    return output;}
解决方法 假设数据长度小于2 ^ 32,则可以添加
明确的演员而不会丢失任何信息.
这应该删除警告:
CC_SHA1(data.bytes,(CC_LONG)data.length,digest);
总结

以上是内存溢出为你收集整理的ios – 如何转换/使用CC_SHA1方法,以便它可以在64位系统中使用全部内容,希望文章能够帮你解决ios – 如何转换/使用CC_SHA1方法,以便它可以在64位系统中使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1108189.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存