通过套接字将信息从java应用程序发送到C#应用程序时,字节顺序是否不同?或者我可以只将C#中的整数发送到java应用程序并将其读取为整数?
(操作系统是否重要,或者对于java/.net是否相同,无论实际操作系统如何处理它?)
这一切都取决于您如何编码数据.如果你对待它只是作为一个字节的原始序列,不存在冲突; 顺序是一样的.当将数据块解释为(例如)整数时,事务处于字节序中.
任何编写了可移植性的序列化程序都会定义字节顺序 - 例如,在协议缓冲区(可用于Java和C#)中,无论您的本地硬件如何,都会使用little-endian .
如果您正在手动写入流,使用基于移位的编码(而不是直接内存复制)之类的东西将为您提供定义的字节顺序.
如果您使用预先安装的平台序列化程序,那么您将受到实施的支配.它可能是endian-safe,也可能不是(也就是说它可能取决于两端的平台).例如,.NET BitConverter类是不是安全的-它通常是假设(错误地)是little-endian的,但在一些平台上(特别是在单上的一些硬件),也可能是大端; 因此.IsLittleEndian财产.
我的建议是使用一个为你处理它的序列化器; p