我使用的是 64 位 Mac,并且我确信 Java(在我的例子中是 1.6)正在使用 big-endian。
我正在尝试从 Objective C 中的 iPhone 与我的 java 服务器进行通信。iPhone(objective C)使用的是小端还是大端?
如果它使用小尾数,如何将 NSData *size 转换为大尾数以便 Java 可以正确读取它?
int s = [protoToSend serializedSize];
NSData *size = [NSData dataWithBytes:&s length:1];
提前致谢
您可以使用核心基础字节交换 http://developer.apple.com/library/mac/#documentation/CoreFoundation/Conceptual/CFMemoryMgmt/Tasks/ByteSwapping.html转换基本类型字节顺序的例程。如果你有一个int
, 您可以使用CFSwapInt32HostToBig()
在发送到 Java 服务器之前将 32 位整数交换为大端字节顺序。
最终,通过网络使用某种标准格式(例如 JSON、XML 等),让序列化和反序列化库处理字节序问题,而不是重新发明轮子,这不是更好吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)