【问题标题】:Binary stream library in Objective C?Objective C中的二进制流库?
【发布时间】:2013-09-08 16:39:45
【问题描述】:

Objective C 中是否有与 C# 的 BinaryReader 和 BinaryWriter 等价的功能?例如,BinaryReader 将采用NSData* 对象(或通用流),并具有-(uint32_t)readUnsignedInt-(double)readDouble 等方法。BinaryWriter 将是对称的,可以与NSMutableData*(或广义流)。

【问题讨论】:

    标签: objective-c serialization binary-serialization binarystream


    【解决方案1】:

    所以我最终为二进制流编写了一个读写器:https://github.com/vladimirg/objc-binary-stream-tools

    【讨论】:

    • 我使用了你的库,但在 GENERATE_METHOD(Int32, int32_t, uint32_t)//'NSInteger' 类型的值不应用作格式参数;改为向“long”添加显式转换,当我运行它时,我得到一个 EXEC_BAD_ACCESS
    • @Legnus,很高兴知道有人在使用它!不幸的是,我无法使用 x64 iPhone,但我确实修复了警告。如果您打开异常断点,运行测试套件并告诉我 EXEC_BAD_ACCESS 的来源是什么,这可能会帮助我解决问题。你可以在 github 上为它打开一个 issue。
    【解决方案2】:

    没有,但是很容易写。

    我编写了一个用于解码 OWON 示波器二进制文件的流阅读器。请参阅this github repository 中的 OwStreamingDataParser 类。创建作家将是同样的事情,但相反。至少,这应该给你一个开始。

    请注意,如果您正在读取/写入 Objective-C 对象的图形并且仅针对 iOS 或 OS X,那么您可以使用 NSArchiver

    【讨论】:

    • 简单 - 也许,微不足道 - 不 :-( 有一些边缘情况需要处理,例如字节序(你假设 int32 的字节序很小,浮点数的主机字节序,对吧?)。也许我应该将此视为写一篇文章并将其发布在 github 上的机会 :-)
    • @VladimirGritsenko 是的——我做了一些字节序的假设,一旦开始处理数据我可能会后悔。 :) 不,不是微不足道的,因为它需要更多的代码。请做并分享它(这样我就可以在我的代码中利用它)。
    • 我会在周末尝试这样做。为了伟大的正义!
    • 完成,请看我对这个问题的回答。希望你觉得它有用!
    • @VladimirGritsenko 不错!请注意getError 应该只是errorlastError。除此之外,向前看!
    猜你喜欢
    • 2014-04-19
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 2014-04-21
    相关资源
    最近更新 更多