![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| zzmeyz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 17.3.2006 Репутация: нет Всего: нет |
Такая ситуация:
в файле хранится 4х байтное значение. Считываю в массив последовательно эти 4 байта. Вопрос как их собрать в одно значение? |
|||
|
||||
| Metal_Heart |
|
|||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
самый простой способ:
Это сообщение отредактировал(а) Metal_Heart - 23.3.2006, 16:51 -------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
| ALKS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 1 Всего: 11 |
zzmeyz, а ты бы книжки почитать по-пробовал чтo-ли. Эккеля того же. а то вопросы типа преобразования типов и вот это. это даже не смешно. это удивительно.
|
|||
|
||||
| Metal_Heart |
|
|||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
при условии конечно, что byte1 - самый младший!
-------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
| zzmeyz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 17.3.2006 Репутация: нет Всего: нет |
Доскональное изучение явы пока не входит в мои планы. Так что не вижу смысла покупать или качать книги... И к тому же эта проблема была последней, и дальнейшая работа с явой опять откладывается на неопределенный срок... |
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Big-endian
Little-endian
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Metal_Heart, это чуть не то получиться
Но в одном байте ведь не число от 0 до 10. zzmeyz, Побитово - самое оптимальное. пустой инт(=0), потом берёшь старший байт, "прижигаешь его" побитовым умножением - (& 0xFF) и умножаешь побитово на свой инт. В инте, в нижних 8 битах - твой старший байт. Потом с помощью битового сдвига << 8 поднимаешь это на 8 бит вверх. берёшь следующий байт, прижигаешь и опять на инт... и сдвиг. Так четыре раза. Только после последнего раза сдвиг не делай - верхнее вылезет за пределы инта, а внизу будет монотонная белиберда. Так будет быстрее всего работать да и правильнее так.
Да ладно, я тоже не собирался ещё год назад на Яве программить -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| zzmeyz |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 17.3.2006 Репутация: нет Всего: нет |
Ладно, согласен Уже качаю... а проблема решилась так:
Всем спасибо за участие. Это сообщение отредактировал(а) zzmeyz - 23.3.2006, 15:18 |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
У тебя неправильный код, он будет работать с ошибками если байт больше 127.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Metal_Heart |
|
|||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
chief39, конечно!
я имел ввиду 0х10.. но почему-то не набрал -------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
| ALKS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 1 Всего: 11 |
эм
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
В спецификации DataInputStream не говорится в каком порядке байт он читает, только что это machine-independent way. К тому же он требует InputStream, а создавть ради пары байт новый стрим не рационально. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Тебе LSD указал что там не так, а не так там из-за отсутствия того самого "прижигания", о котором я говорил. Перед какими-либо операциями, всё что ниже инта, приводится к нему. То есть байт перегоняется в инт и потом уже побитно складывается. и если ты не наложишь такую маску, которая выделяет лишь нижний байт(твой) - будет лажа Если ты сразу после после битового умножения запихиваешь в такой же размерности переменную - можно пренебречь(когда байт -> инт -> байт), верх срежется. А поскольку ты начинаешь двигать сей байт по инту и укладывать рядом бругие байты - то обязательно обрезание!!! эээ... нууу.. то есть прижигание -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 1 Всего: 232 |
Гм... извиняюсь, а в Java разве нету аналога Stream.ReadByte() и беззнакового типа byte 0...255 ?
-------------------- ![]() |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Аналог Stream.ReadByte() есть, а беззнаковых типов нет.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |