ByteBuffer getInt () question

Мы используем Java ByteBuffer для связи сокетов с сервером C ++. Мы знаем, что Java является прямым порядком байтов, и связь через сокеты также является прямым порядком байтов. Поэтому всякий раз, когда поток байтов получен и помещен в ByteBuffer Java, мы вызываем getInt (), чтобы получить значение. Нет проблем, без преобразования.

Но если мы каким-то образом специально установим порядок байтов ByteBuffer на Little-endian (мой коллега действительно это сделал),

  1. Java автоматически преобразует Big-endian в Little-endian когда данные помещаются в ByteBuffer?

  2. Тогда getInt () версии Little-endian вернет вам правильное значение?

Думаю, ответ на два вышеупомянутых вопроса - да. Но когда я пытаюсь проверить свое предположение и пытаюсь выяснить, как getInt () работает в ByteBuffer, я обнаружил, что это абстрактный метод. Единственный подкласс ByteBuffer - это класс MappedByteBuffer, который не реализовал абстрактный getInt (). Так где же реализация метода getInt ()?

Для отправки, поскольку мы используем ByteBuffer с прямым порядком байтов, нам нужно преобразовать их в байты с прямым порядком байтов, прежде чем мы поместим их в сокет.

7
задан Jonas 4 August 2011 в 15:16
поделиться