Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
unknown

Как же быть с форматом записи int

01.11.2009, 10:29. Показов 1611. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема возникла (собственно не проблема, а вопрос) с сохранением
двоичных данных в java. Например при использовании

int NUM = 1000;
DataOutputStream dos = ...;
dos.writeInt(NUM);

в файл он запишет значение 03E8, хотя некоторые форматы
хранения как раз наоборот должны хранить перевернутые значения
разрядов числа: <старший><младший>, то есть в нашем случае это
будет число E803. Но средствами java это число
прочитается как 59395, а не как 1000.

Вопрос - почему так? Как в java учесть специфику сохранения числа когда надо - в перевернутом, а когда надо в прямом виде? Или для этого потребуются дополнительные ухищрения типа сначала прочитать 4 байта для числа int, а затем их вручную перевернуть?
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.11.2009, 10:29
Ответы с готовыми решениями:

Как при записи названий файлов в ListView, поставить их иконки рядом по расширению форматом 16х16?
Как при записи названий файлов в ListView, поставить их иконки рядом по расширению форматом 16х16. А то я раньше делал то иконки залетали...

Error С2664. Параметр 1 не может быть преобразован из 'int' в 'int [][10]'
Добрый день! Компилятор &quot;ругается&quot; на описание функции. Как устранить данную проблему самому не знаю. Заранее благодарю за помощь! ...

Форматом записи в файл
Господа, столкнулся с таким вот траблом... Написал програмку &quot;Записать в файл прямого доступа N действительных чисел. Найти наибольшее из...

7
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
спасибо
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2010, 14:51
Помогаю со студенческими работами здесь

Terminate called after throwing an instance of 'int' Aborted -Ошибка, как быть?
Здравствуйте! Выдается такая ошибка, не понимаю почему. terminate called after throwing an instance of 'int' Aborted команда:...

Какая из этих функций int Q(int w) int W(int y,int u,int i) сработает быстрее?
Если есть 2 функции(простые или перегруженные) к примеру Q(int w) int W(int y,int u,int i)или int Funkz(int a) int Funkz(int a, int b, int...

Как быть с переполнением очереди при мультипоточной записи?
Всем привет! Вопрос такой: нужно реализовать сжатие файла в мультипоточной среде. Логика такая: один поток читает блок, кладёт в...

Размерность int или как из signed int сделать unsigned int?
Добрый день. Есть старая база уже с некоторыми данными. При развёртывании её на одном из тестовых серверов столкнулся с неожиданной...

Как правильно перевести int и string в *char для записи в SQLlite?
Доброго времени суток! Вопрос такой: Каким образом обычно переводятся значения типа int и string в SQL-запрос типа *char ? Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru