Каков самый простой способ анализа двоичных файлов в Cocoa Touch?

StackOverflow https://stackoverflow.com/questions/402555

  •  03-07-2019
  •  | 
  •  

Вопрос

Скажем, у меня есть двоичный файл (сгенерированный с помощью Java), содержащий 32-битное значение int.В настоящее время я использую следующий код Objective-C для его анализа:

NSString *path = [[NSBundle mainBundle] pathForResource:@"foo" ofType:@"dat"];
NSFileHandle *file = [NSFileHandle fileHandleForReadingAtPath:path];

unsigned long intValue;
memcpy(&intValue, [[file readDataOfLength:4] bytes], 4);
intValue = NSSwapBigLongToHost(intValue);

[file closeFile];

Мой первый вопрос - спросить, является ли это распространенным способом выполнения задач на iPhone, потому что я не нашел ничего похожего на Java DataInputStream.

Мой второй вопрос связан со строкой кода с memcpy.Я не понимаю, почему вместо этого не работает следующая часть (более элегантная, менее «низкоуровневая»):

[[file readDataOfLength:4] getbytes:&intValue];

Я получаю предупреждение при сборке:

'NSData' may not respond to '-getbytes:'

При выполнении я получаю:

'NSInvalidArgumentException', reason: '*** -[NSConcreteData getbytes:]: unrecognized selector sent to instance
Это было полезно?

Решение

Для последнего вопроса используйте getBytes (заглавная буква B).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top