byte tmp[] = new byte[2];
short rID = 257;
tmp[0] = (byte)rID;
tmp[1] = (byte)(rID >> 8);
. . .
rID = (short)tmp[1];
rID<<= 8;
rID |= (short)tmp[0];
JME преобразование short в 2 байта
У меня возникла такая задача. К примеру есть
byte[] tmp= new byte[2];
short rID= 257;
Нужно занести в массив tmp это значение.
Ну чтобы потом можно было обратно преобразовать таким образом:
short answer= tmp[0]<<8+tmp[1] (преобразование в беззнаковый я опустил, дабы не усложнять задачу.)
Алгоритм этой процедуры мне видется таким.
Сдвигаем rID вправо на 8 бит и присваиваем первой ячейке.
Потом rID сдвигаем сначала влево на 8, потом вправо и получаем второй байт.
Так вот. Проблема заключается в том, что результат операции rID>>8 имеет тип int. Прямое преобразование не работает.
Заранее благодарен за Ваши мысли по этому поводу.
С ув. Алексей.
Код:
С ув. Алексей.
Хм... странно. Поставил себе специально WTK 2.2 - никакой ошибки при компиляции нет.
С ув. Алексей
[size=1]Признаю свою ошибку. См. пост номер 8[/size]
извини но здєсь что-то не так - ти что-то напутал:
1) В класе-обгортке Byte нету метода parseInt - даже Гугл такого не нашол.
2) Не думаю что разработчики Java написали би метод в такой нелепой форме "byte Byte.parseInt(int);" - ето не логично!!!
В класе Byte есть метод "byte Byte.parseString(String);" - но он сюда не подходит.
To Ner'zhul:
прямое преобразование работает всегда. Возможно действительно что-то с настройками.
А точно!
Простите, недосмотрел :(
To Ner'zhul:
Наверно, можно так: mp[1] =Byte.parseByte(String.valueOf(rId >> 2));