Я использую dataWithContentsOfFile
на изображении PNG, и iOS Simulator возвращает значение, отличное от iOS-устройства. Мое устройство - это 64-битный iPad Air (iOS 8.3), и мой симулятор настроен на iPad Retina iOS 8.3. Вот код, который я использую:NSData dataWithContentsOfFile возвращает разные результаты на устройстве
NSString *sourcePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"];
NSData *data = [NSData dataWithContentsOfFile:sourcePath];
NSString *hash = [self md5Hash:data]
// Results on device: 2D25F346396FB00BEB27754ED1B56310
// Results on simulator: 55016FD1AB3DA0F882FEA85D5ABCA2ED
Я проверил мой хэш-функции со строкой, и она отлично работает независимо от устройства. Я не буду показывать результаты метода dataWithContentsOfFile, но могу заверить вас, что они разные.
Update: Тестирование dataWithContentsOfURL
отлично работает, например:
NSURL *fileURL = [NSURL URLWithString:@"https://www.google.com/images/srpr/logo11w.png"];
NSData *data = [NSData dataWithContentsOfURL:fileURL];
NSString *hash = [self md5Hash:data]
// Results on device: 57E396BAEDFE1A034590339082B9ABCE
// Results on simulator: 57E396BAEDFE1A034590339082B9ABCE
Я бы сказал, что разница в MD5 заключается в том, что разные архитектуры используют разные форматы чисел. Может ли быть, что изменчивый iPad работает в 32-битном режиме? Возможно, связано: http://stackoverflow.com/questions/697361/md5-hash-calculates-differently-on-server – Gyfis
Извините, я допустил ошибку. Я использую iPad Retina, который является 64-битным. Я проверил хэш-код против текстовых строк, и они дают те же результаты на симуляторе и устройстве в моем случае. –
Я бы предположил, что файл отличается. –