我们正在使用Java ByteBuffer与C ++服务器进行套接字通信。我们知道Java是大端字节序,套接字通信也是大端字节序。因此,每当Java接收到字节流并将其放入ByteBuffer中时,我们调用getInt()获取值。没有问题,无需转换。
但是,如果我们明确将ByteBuffer的字节顺序设置为小端字节序(我的同事实际上就是这样做的),
1. 当数据被放入ByteBuffer中时,Java是否会自动将大端字节序转换为小端字节序? 2. 然后,小端字节序版本的getInt()将向您返回正确的值吗?
我猜想对于上述两个问题的答案都是肯定的。但是,当我尝试验证我的猜测并尝试找到ByteBuffer中getInt()的工作原理时,我发现它是一个抽象方法。 ByteBuffer的唯一子类是MappedByteBuffer类,它没有实现抽象的getInt()。那么getInt()方法的实现在哪里呢?
对于发送来说,因为我们正在使用小端字节序的ByteBuffer,所以在将它们放入套接字之前,需要将它们转换为大端字节序的字节。
但是,如果我们明确将ByteBuffer的字节顺序设置为小端字节序(我的同事实际上就是这样做的),
1. 当数据被放入ByteBuffer中时,Java是否会自动将大端字节序转换为小端字节序? 2. 然后,小端字节序版本的getInt()将向您返回正确的值吗?
我猜想对于上述两个问题的答案都是肯定的。但是,当我尝试验证我的猜测并尝试找到ByteBuffer中getInt()的工作原理时,我发现它是一个抽象方法。 ByteBuffer的唯一子类是MappedByteBuffer类,它没有实现抽象的getInt()。那么getInt()方法的实现在哪里呢?
对于发送来说,因为我们正在使用小端字节序的ByteBuffer,所以在将它们放入套接字之前,需要将它们转换为大端字节序的字节。