Хорошо, я передаю изображение. И, как вы все знаете, хеширование изображения занимает FOREVER. Поэтому я принимаю 100 образцов изображения, равномерно распределенных. Вот код.Кастинг от const void до char?
#define NUM_HASH_SAMPLES 100
@implementation UIImage(Powow)
-(NSString *)md5Hash
{
NSData *data = UIImagePNGRepresentation(self);
char *bytes = (char*)malloc(NUM_HASH_SAMPLES*sizeof(char));
for(int i = 0; i < NUM_HASH_SAMPLES; i++)
{
int index = i*data.length/NUM_HASH_SAMPLES;
bytes[i] = (char)(data.bytes[index]); //Operand of type 'const void' where arithmetic or pointer type is required
}
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5(bytes, NUM_HASH_SAMPLES, result);
return [NSString stringWithFormat:
@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
}
Ошибка указана в комментариях.
Что я делаю неправильно?
Спасибо! Тем не менее, я обнаружил, что выполнение байтов [i] = & data.bytes [index] было немного чище. И мой профессор компьютерных наук сказал мне, что хорошей практикой является бросок маллоков. Идите фигуру. – rweichler
@rweichler он ошибается. Также этот код выглядит некорректным ... –