如何从NSStreams
读取和写入整数?我知道我可以单独读取字节,但我想考虑字节序。对于这些情况,Java有DataStreams
,在Obj-C中是否有相同的东西?
答案 0 :(得分:2)
在溪流中没有类似的东西。有标准的ntoh * / hton *函数套件可以从网络转换为主机订单并返回。
答案 1 :(得分:0)
有NSInputStream读取:maxLength:和NSOutputStream写:maxLength:
答案 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或其他类似的东西也在这里分层到应用程序中;希望胜过网络流量。 (如果我可以管理它,我倾向于避免使用我自己的协议。)
无论你使用这些东西做什么,记得在你在这里实现的任何网络协议中将版本号粘贴到字节流中。