Существуют ли эквивалентные классы или функции для DataInputStream в Java для iPhone для чтения двоичной информации
Java предоставляет классы DataInputStream и DataOutputStream для чтения / записи двоичных данных (в виде байтов) в структурированном виде, например DataInputStream.readInt()/readLong()/read(byte[]) из потока байтов; аналогично для DataOutputStream.
Есть ли в iPhone эквивалентные классы или функции?
2 ответа
Баран,
Я чувствую твою боль. Исходя из земли Java, многие вещи будут ощущаться отсталыми или отсутствующими. NSData - это ваша отправная точка, но она работает больше как потоковые классы ByteArray, поскольку содержит материализованные данные. Также помните, что нет никаких функций форматирования для сериализации / десериализации данных, записанных / прочитанных в / из источника. Другими словами, вы не найдете здесь readInt(), readShort(). Сделайте это: Cmd+Shift+? из XCode, чтобы вызвать справку, введите NSData, чтобы вызвать документы для нее, затем щелкните ссылку для руководства по двоичному программированию. Решив проблему, которая может оказаться именно тем, что вы собираетесь решить, я предупрежу вас о порядке чтения данных на iPhone из потока, написанного Java. Вам придется менять порядок байтов от низкого до высокого. Другими словами, если вы используете DataOutputStream.writeInt() на одном конце (в чем-то вроде сервлета), то попробуйте отобразить int поверх данных, считанных в объект NSData, а затем поменять местами байтовые порядки.
Я думаю, NSData сделает то, что вы ищете: Базовая ссылка на класс данных