如何从/向NSStreams读取/写入int

时间:2009-07-16 20:42:22

标签: iphone objective-c cocoa

如何从NSStreams读取和写入整数?我知道我可以单独读取字节,但我想考虑字节序。对于这些情况,Java有DataStreams,在Obj-C中是否有相同的东西?

4 个答案:

答案 0 :(得分:2)

在溪流中没有类似的东西。有标准的ntoh * / hton *函数套件可以从网络转换为主机订单并返回。

答案 1 :(得分:0)

答案 2 :(得分:0)

我不知道objc等价物,但把事情掌握在自己手中并不难:

使用移位运算符一次写入一个字节,并按类似方式读取和重构它们。

如果您想用大端格式编写,请执行以下操作:

for(int i = 0; i < 4; i++) WriteAByteLOL((n >> (8*(4-i-1))) & 0xff);

如果你想要小端,请反转循环次序。

对于读取,请执行此操作(假设数据位于4字节数组b中):

unsigned int n = 0;
for(int i = 0; i < 4; i++) n = (n<<8) | b[i];

容易!

答案 3 :(得分:0)

副手,我不知道是否有套接字层实现。

在Objective C中,查看Core Endian Reference手册。

或者查看Mac OS X中提供的C级XDR例程;外部数据表示(XDR)例程是常见的Unix级RPC环境的一部分。

或者你可以调整自己的字节。

gSOAP或XML或其他类似的东西也在这里分层到应用程序中;希望胜过网络流量。 (如果我可以管理它,我倾向于避免使用我自己的协议。)

无论你使用这些东西做什么,记得在你在这里实现的任何网络协议中将版本号粘贴到字节流中。