Есть ли эквивалент в Objective C для C# BinaryReader и BinaryWriter? Например, BinaryReader возьмет объект NSData*
(или обобщенный поток) и будет иметь такие методы, как -(uint32_t)readUnsignedInt
, -(double)readDouble
и т. Д. BinaryWriter будет симметричным и будет работать с NSMutableData*
(или обобщенным потоком).Бинарная библиотека потоков в Objective C?
ответ
Так что я в конечном итоге написание читателя и писателя для бинарных потоков: https://github.com/vladimirg/objc-binary-stream-tools
Существует нет, но его очень легко написать.
Я написал считыватель потоков для декодирования двоичных файлов OWON Oscilloscope. См. Класс OwStreamingDataParser, найденный в this github repository. Создание писателя будет одним и тем же, но наоборот. Это должно, по крайней мере, дать вам начало.
Обратите внимание, что если вы читаете/записываете графики объектов Objective-C и используете только iOS или OS X, то вы можете использовать NSArchiver.
Easy - возможно, тривиальна - нет :-(Есть несколько случаев края для обработки, такие как порядок байтов (вы предполагается мало для int32 порядка байтов и host endianness для float, правильно?). Может быть, я должен увидеть это как возможность написать одно и опубликовать его на github :-) –
@VladimirGritsenko Да, я сделал некоторые предположения о том, что я, вероятно, пожалею, как только начну обрабатывать данные. :) Нет, не тривиально, так как для этого потребуется еще немного кода. Пожалуйста, сделайте и поделитесь им (чтобы я мог использовать его в своем коде). – bbum
Я попробую сделать это в выходные. За великую справедливость! –
Я использовал вашу библиотеку, но получаю предупреждение о GENERATE_METHOD (Int32, int32_t, uint32_t) // Значения типа «NSInteger» не должны использоваться в качестве аргументов формата; добавьте явное приведение к «длинному», а когда я запустил его, я получаю EXEC_BAD_ACCESS – Legnus
@Legnus, приятно знать, что кто-то использует это! К сожалению, у меня нет доступа к iPhone x64, но я исправил предупреждения. Если вы включите контрольные точки исключений, запустите набор тестов и скажите мне, что такое источник EXEC_BAD_ACCESS, что может помочь мне исправить проблему. Вы можете открыть для него проблему на github. –