Некоторое время назад мне пришлось выполнить некоторую работу, аналогичную этой, и я обнаружил, что лучший способ выполнить такую работу - это использовать ByteBuffer
и его преобразования в DoubleBuffer
, LongBuffer
и т. Д. Вы можетепреобразовать массив байтов в ByteBuffer
, вызвав
ByteBuffer myBuffer = ByteBuffer.wrap(myRawArray);
Оттуда вы можете получить представление байтов в виде списка int
s, вызвав
IntBuffer myIntBuffer = myBuffer.asIntBuffer();
и вы можете затем преобразовать байты, вызвав
int nextInt = myIntBuffer.get();
Эти классы также имеют большую поддержку для массовых операций get, так что если вы точно знаете, что получаете целую кучу данныхпо сети того же типа вы можете выполнять преобразования очень быстро.
Альтернативным подходом было бы, если это вообще возможно, использовать какую-либо сериализацию на основе Java для отправки данных по сети.Это позволяет вам делать преобразования намного проще, используя классы потоковой записи.Конечно, это может быть недоступно, особенно если вы общаетесь с сервером, отличным от Java, но его стоит изучить.