Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / 4 байта в инт? / 6 сообщений из 6, страница 1 из 1
17.11.2006, 19:57:31
    #34137855
JZeleboba
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4 байта в инт?
Не бейте сильно :)
Есть проблема- получил байтовый массив чтением из файла(впринципе это не важно откуда получил)
получил byte[] bytes;
в bytes записаны данные - 4байтовые значения которые мне надо вытащить, то есть сформировать из каждых четырех байт (подряд) по одному инту или даблу.Не знаком со стандартными классами которые могут это сделать поэтому делал так:
int[]a;
a[j]=(bytes )|((bytes[i+1])<<8)|((bytes[i+2])<<16)|((bytes[i+3])<<24)
но не уверен что правильно.Подскажите можно ли сделать то же стандартными средствами.Спасибо.
...
Рейтинг: 0 / 0
17.11.2006, 20:12:39
    #34137883
Сашко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4 байта в инт?
Я в яве не программирую, поэтому точно не знаю, но думаю можно попробовать так?

int new DataInputStream( new ByteArrayInputStream(byte[] buffer) ).readInt( )
...
Рейтинг: 0 / 0
17.11.2006, 20:37:48
    #34137918
JZeleboba
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4 байта в инт?
спасибо,сейчас посмотрю что можно из этого сделать..
...
Рейтинг: 0 / 0
17.11.2006, 20:50:29
    #34137940
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4 байта в инт?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
 public   static   int  bytesToInt( byte [] bytes,  int  offset) {
         return  (bytes[offset +  3 ] <<  24  & 0xFF000000)   +
               (bytes[offset +  2 ] <<  16  & 0xFF0000)     +
               (bytes[offset +  1 ] <<  8   & 0xFF00)       +
               (bytes[offset]           & 0xFF);
    }

     public   static   int  bytesToInt( byte [] bytes) {
         return  bytesToInt(bytes,  0 );
    }

     public   static   byte [] intToBytes( int  value,  int  offset) {
         byte [] out =  new   byte [offset +  4 ];

        out[offset +  3 ] = ( byte )(value >>>  24 );
        out[offset +  2 ] = ( byte )(value >>>  16 );
        out[offset +  1 ] = ( byte )(value >>>  8 );
        out[offset]      = ( byte ) value;

         return  out;
    }

     public   static   byte [] intToBytes( int  value) {
         return  intToBytes(value,  0 );
    }
...
Рейтинг: 0 / 0
17.11.2006, 21:23:12
    #34137968
unicornmirage
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4 байта в инт?
стандартные средства есть!

1) облечь исходный массив byte[] в поток DataInputStream и из него прочитать уже по int
2) использовать библиотеку java.nio в которой гораздо продвинетее средства
...
Рейтинг: 0 / 0
17.11.2006, 21:49:10
    #34137985
JZeleboba
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
4 байта в инт?
всем спасибо
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / 4 байта в инт? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]