| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Запись произвольного количества байт из потока. |
| Автор: zzmeyz 23.3.2006, 13:38 |
| Такая ситуация: в файле хранится 4х байтное значение. Считываю в массив последовательно эти 4 байта. Вопрос как их собрать в одно значение? |
| Автор: Metal_Heart 23.3.2006, 13:44 | ||
самый простой способ:
|
| Автор: ALKS 23.3.2006, 13:44 |
| zzmeyz, а ты бы книжки почитать по-пробовал чтo-ли. Эккеля того же. а то вопросы типа преобразования типов и вот это. это даже не смешно. это удивительно. |
| Автор: Metal_Heart 23.3.2006, 13:45 |
| при условии конечно, что byte1 - самый младший! |
| Автор: zzmeyz 23.3.2006, 13:55 | ||
Доскональное изучение явы пока не входит в мои планы. Так что не вижу смысла покупать или качать книги... И к тому же эта проблема была последней, и дальнейшая работа с явой опять откладывается на неопределенный срок... |
| Автор: LSD 23.3.2006, 14:37 | ||||
Big-endian
Little-endian
|
| Автор: zzmeyz 23.3.2006, 15:05 | ||||
Ладно, согласен Уже качаю... а проблема решилась так:
Всем спасибо за участие. |
| Автор: LSD 23.3.2006, 15:22 | ||
У тебя неправильный код, он будет работать с ошибками если байт больше 127.
|
| Автор: Metal_Heart 23.3.2006, 16:47 |
| chief39, конечно! я имел ввиду 0х10.. но почему-то не набрал |
| Автор: ALKS 23.3.2006, 17:13 |
| эм |
| Автор: LSD 23.3.2006, 21:21 | ||
В спецификации DataInputStream не говорится в каком порядке байт он читает, только что это machine-independent way. К тому же он требует InputStream, а создавть ради пары байт новый стрим не рационально. |
| Автор: chief39 24.3.2006, 13:04 |
| Тебе LSD указал что там не так, а не так там из-за отсутствия того самого "прижигания", о котором я говорил. Перед какими-либо операциями, всё что ниже инта, приводится к нему. То есть байт перегоняется в инт и потом уже побитно складывается. и если ты не наложишь такую маску, которая выделяет лишь нижний байт(твой) - будет лажа Если ты сразу после после битового умножения запихиваешь в такой же размерности переменную - можно пренебречь(когда байт -> инт -> байт), верх срежется. А поскольку ты начинаешь двигать сей байт по инту и укладывать рядом бругие байты - то обязательно обрезание!!! эээ... нууу.. то есть прижигание |
| Автор: mr.DUDA 24.3.2006, 23:15 |
| Гм... извиняюсь, а в Java разве нету аналога Stream.ReadByte() и беззнакового типа byte 0...255 ? |
| Автор: LSD 25.3.2006, 12:47 |
| Аналог Stream.ReadByte() есть, а беззнаковых типов нет. |