Objective c 目标C中的二进制流库?

Objective c 目标C中的二进制流库?,objective-c,serialization,binary-serialization,binarystream,Objective C,Serialization,Binary Serialization,Binarystream,在Objective C中是否有与C#的BinaryReader和BinaryWriter等价的东西?例如,二进制读取器将采用NSData*对象(或通用流),并将具有诸如-(uint32_t)readUnsignedInt,-(double)readDouble等方法。二进制读取器将是对称的,并将使用NSMutableData*(或通用流)。没有,但是写一个很容易 我编写了一个流读取器,用于对示波器二进制文件进行解码。请参阅中的OwStreamingDataParser类。创造一个作家是同样的事

在Objective C中是否有与C#的BinaryReader和BinaryWriter等价的东西?例如,二进制读取器将采用
NSData*
对象(或通用流),并将具有诸如
-(uint32_t)readUnsignedInt
-(double)readDouble
等方法。二进制读取器将是对称的,并将使用
NSMutableData*
(或通用流)。

没有,但是写一个很容易

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


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

没有,但编写一个非常简单

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


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

因此我为二进制流编写了读写器:

因此我为二进制流编写了读写器:

简单-可能很简单-不:-(有一些边缘情况需要处理,比如endianness(你假设int32的endianness很小,浮点数的host endianness,对吧?)。也许我应该把这看作是一个写一个并发布在github上的机会:-)@VladimirGritsenko是的——我做了一些endianness假设,一旦开始处理数据,我可能会后悔的。:)不,这不是小事,因为它需要更多的代码。请做并分享它(这样我可以在我的代码中利用它)。我将在周末尝试做它。为了伟大的正义!好了,请看我对这个问题的回答。希望你觉得它有用@VladimirGritsenko不错!注意
getError
应该是
error
lastError
。除此之外,直视未来!简单-可能,不重要-否:-(有一些边缘情况需要处理,例如endianness(您假设int32的endianness很小,浮动的host endianness,对吗?)。也许我应该将此视为编写一个并将其发布到github上的机会:-)@VladimirGritsenko是的——我做了一些endian假设,一旦我开始处理数据,我可能会后悔不,这不是小事,因为它需要更多的代码。请做并分享它(这样我可以在我的代码中利用它)。我将在周末尝试做它。为了伟大的正义!好了,请看我对这个问题的回答。希望你觉得它有用@VladimirGritsenko不错!注意
getError
应该是
error
lastError
。除此之外,直视未来!我使用了您的库,但在GENERATE_方法(Int32、Int32_t、uint32_t)上收到警告//类型为“NSInteger”的值不应用作格式参数;将显式强制转换添加到“long”中,当我运行它时,会得到一个EXEC\u BAD_ACCESS@Legnus,很高兴知道有人在用这个!不幸的是,我无法访问x64 iPhone,但我确实修复了警告。如果打开异常断点,运行测试套件并告诉我EXEC\u BAD\u访问的来源,这可能会帮助我解决问题。您可以在github上为其打开一个问题。我使用了您的库,但在GENERATE_方法(Int32、Int32_t、uint32_t)上收到警告//类型为“NSInteger”的值不应用作格式参数;将显式强制转换添加到“long”中,当我运行它时,会得到一个EXEC\u BAD_ACCESS@Legnus,很高兴知道有人在用这个!不幸的是,我无法访问x64 iPhone,但我确实修复了警告。如果打开异常断点,运行测试套件并告诉我EXEC\u BAD\u访问的来源,这可能会帮助我解决问题。您可以在github上为它打开一个问题。