Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

JME преобразование short в 2 байта

17K
29 января 2007 года
Ner'zhul
11 / / 16.08.2006
Здравствуйте.
У меня возникла такая задача. К примеру есть
byte[] tmp= new byte[2];
short rID= 257;
Нужно занести в массив tmp это значение.
Ну чтобы потом можно было обратно преобразовать таким образом:
short answer= tmp[0]<<8+tmp[1] (преобразование в беззнаковый я опустил, дабы не усложнять задачу.)

Алгоритм этой процедуры мне видется таким.
Сдвигаем rID вправо на 8 бит и присваиваем первой ячейке.
Потом rID сдвигаем сначала влево на 8, потом вправо и получаем второй байт.

Так вот. Проблема заключается в том, что результат операции rID>>8 имеет тип int. Прямое преобразование не работает.

Заранее благодарен за Ваши мысли по этому поводу.

С ув. Алексей.
391
29 января 2007 года
Archie
562 / / 03.02.2005
Что подразумевается под "Прямое преобразование не работает"?
 
Код:
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];
17K
29 января 2007 года
Ner'zhul
11 / / 16.08.2006
"tmp[1] = (byte)(rID >> 8);" - вот и подразумевается, что эта строчка не работает. Пишет "Incompatible types byte and int" компилятор WTK 2.2.
С ув. Алексей.
391
29 января 2007 года
Archie
562 / / 03.02.2005
Хм... странно. Поставил себе специально WTK 2.2 - никакой ошибки при компиляции нет.
17K
29 января 2007 года
Ner'zhul
11 / / 16.08.2006
Благодарю за помошь. Буду разбираться с настройками...

С ув. Алексей
6.6K
30 января 2007 года
Aoli
185 / / 22.01.2007
А если есть в J2ME классы обертки, то можно попробовать так: tmp[1] = Byte.parseInt(rID >> 8);

[size=1]Признаю свою ошибку. См. пост номер 8[/size]
3.7K
30 января 2007 года
bioflash
169 / / 01.10.2005
To Aoli:
извини но здєсь что-то не так - ти что-то напутал:
1) В класе-обгортке Byte нету метода parseInt - даже Гугл такого не нашол.
2) Не думаю что разработчики Java написали би метод в такой нелепой форме "byte Byte.parseInt(int);" - ето не логично!!!
В класе Byte есть метод "byte Byte.parseString(String);" - но он сюда не подходит.

To Ner'zhul:
прямое преобразование работает всегда. Возможно действительно что-то с настройками.
6.6K
30 января 2007 года
Aoli
185 / / 22.01.2007
To bioflash:
А точно!
Простите, недосмотрел :(

To Ner'zhul:
Наверно, можно так: mp[1] =Byte.parseByte(String.valueOf(rId >> 2));
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог