|
unknown
|
|
Как же быть с форматом записи int01.11.2009, 10:29. Показов 1611. Ответов 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?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|