gpt4 book ai didi

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

转载 作者:技术小花猫 更新时间:2023-10-29 11:16:56 27 4
gpt4 key购买 nike

我正在将我的应用程序转换为在 64 位系统上运行,但我一直在尝试正确使用内置的 CC_SHA1 方法。

我收到警告:

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

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

data.lengthNSUInteger

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 位系统中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20713492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com