|
unknown
|
|
Как же быть с форматом записи int01.11.2009, 10:29. Показов 1595. Ответов 7
Метки нет (Все метки)
Проблема возникла (собственно не проблема, а вопрос) с сохранением
двоичных данных в java. Например при использовании int NUM = 1000; DataOutputStream dos = ...; dos.writeInt(NUM); в файл он запишет значение 03E8, хотя некоторые форматы хранения как раз наоборот должны хранить перевернутые значения разрядов числа: <старший><младший>, то есть в нашем случае это будет число E803. Но средствами java это число прочитается как 59395, а не как 1000. Вопрос - почему так? Как в java учесть специфику сохранения числа когда надо - в перевернутом, а когда надо в прямом виде? Или для этого потребуются дополнительные ухищрения типа сначала прочитать 4 байта для числа int, а затем их вручную перевернуть? |
|
| 01.11.2009, 10:29 | |
|
Ответы с готовыми решениями:
7
Как при записи названий файлов в ListView, поставить их иконки рядом по расширению форматом 16х16? Error С2664. Параметр 1 не может быть преобразован из 'int' в 'int [][10]' Форматом записи в файл |
|
0 / 0 / 0
Регистрация: 05.04.2009
Сообщений: 78
|
|
| 02.11.2009, 11:06 | |
|
Сделайте так, тогда что запишется то и прочитается
Integer NUM = new Integer(1000); ObjectOutputStream dos = new ObjectOutputStream(fileout); dos.writeObject(NUM); т.е. сериализация это механизм учитывающий различное представление битов в слове, на разных машинах.
0
|
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 02.11.2009, 11:36 | |
|
На сколько я знаю, устоявшимся стандартом предполагается, что младшие разряды записываются на младших адресах. Поэтому и кажется, что байты в словах переставлены местами. Короче 'визуально' при побайтовом чтении слева направо слово 1234 будет записано 3412. И это правильно
) writeInt() разве не так пишет?
0
|
|
|
unknown
|
|
| 03.11.2009, 10:29 | |
|
За сериализацию конечно спасибо, но это не совсем то. Ведь при записи Integer записывается также и сигнатура объекта.
Задача совершенно в другом: 1) есть бинарный файл, содержащий 'перевернутые записи чисет типа int', т.е. число 1000 записано как E803. 2) Надо: прочитать этот бинарный файл. Естественно метод readInt() не прочитает правильно число, т.к. данный метод ориентирован на 'прямое представление чисел'. 3) Я читал примитивными методами: сначала читал побайтно методом readByte() сначала E8h, затем 03h, а потом вручную переворачивал и формировал число 3E8h. Данный вариант работает во-первых медленнее, чем нативный метод readInt(). 4) Вопрос: есть ли нативный метод в java, подобный методу readInt(), но читающий 'перевернутые'. Зараннее спасибо. |
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 03.11.2009, 15:28 | |
|
Предлагаю пристально посмотреть на пакет java.nio.* и java.nio.chanales.*. Конкретно FileChannel.
0
|
|
|
unknown
|
|
| 05.03.2010, 12:23 | |
|
Но ведь этот класс абстрактный. Как же его использовать и где реализация?
|
|
|
Barsik
|
|
| 08.03.2010, 05:47 | |
|
java.nio.ByteBuffer
budder.order(ByteOrder.LITTLE_ENDIAN); ByteOrder b = buffer.order() Предупреждение метод order не использует соглашение об именах set/get Core Java 2 Volume I - Fundamentals. gl |
|
|
unknown
|
|
| 14.03.2010, 14:51 | |
|
спасибо
|
|
| 14.03.2010, 14:51 | |
|
Помогаю со студенческими работами здесь
8
Terminate called after throwing an instance of 'int' Aborted -Ошибка, как быть? Какая из этих функций int Q(int w) int W(int y,int u,int i) сработает быстрее? Как быть с переполнением очереди при мультипоточной записи? Размерность int или как из signed int сделать unsigned int?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во
всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
|