Вы, кажется, неправильно поняли, что делает этот метод. Он не анализирует строку для шестнадцатеричного представления чисел; он просто создает объект данных, который представляет строку с определенной байтовой кодировкой. Таким образом, в вашем случае данные будут содержать байты со значениями 54 (значение ASCII для «6»), 49 (для «1»), 55 (для «7»), 51 (для «3»), 55 ( для «7»), 51 (для «3»), 54 (для «6»), 101 (для «е») и т. д.
Если вы хотите проанализировать шестнадцатеричные строки, вы можете использовать NSScanner для поиска шестнадцатеричных значений.
Вот основная форма того, что вы хотите:
NSScanner *scanner = [NSScanner scannerWithString:yourHexString];
NSMutableData *data = [NSMutableData data];
while (![scanner isAtEnd]) {
unsigned value;
if ([scanner scanHexInt:&value]) {
[data appendBytes:&value length:sizeof(value)];
} else {
NSLog(@"Invalid value in scanned string");
}
}
(Предупреждение: записано в браузере, не проверялось, может привести к краху, если вы попытаетесь запустить с ним ядерный реактор и т. Д.)