![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
Уважаемые форумчане! Очень нужно узнать как осуществить форматированный ввод с файла, ну и вывод тоже. В общем есть поля в классе, все поля разной длины, и надо из бинарного файла, вытаскивать определенные блоки байт и запихивать их в переменные класса. Смысл задачи в том что есть бинарники, в которые зашиты структуры С, и надо эти структуры оттуда выдрать но уже в яву. Размеры и последовательность записей известны. Спасибо. Буду рад любой помощи.
-------------------- The truth is out there |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
RandomAccessFile или FileChanel, в зависимости от того какие там структуры.
-------------------- 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. |
|||
|
||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
LSD,
Структуры самые простые.вот к примеру. long NT; short DC; short MD; long VA; short VN; short DL; Был бы очень рад если бы Вы мне привели пример пользования названными классами с учетом моей задачи, горю просто. Спасибо. зы. Понимаете, мне надо что то наподобие функции fscanf в си. Форматная строка и все такое. ![]() Это сообщение отредактировал(а) zone51 - 9.12.2006, 02:28 -------------------- The truth is out there |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Только про порядок байт не забудь. -------------------- 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. |
|||
|
||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
LSD,
Спасибо, а тока че 24 байта а не 16? И если Вас не затруднит, может быть Вы дадите хоть краткую характеристику проделанных Вами операций сдвига и битового и, что то не вьехал. Спасибо. зы. ((buffer[0] & 0xFFL) << 56) а FFL это ваще какая система счисления? размер лонга 4 байта. сшорта-2. И в программе это прошито Просто моя прога которую я перевожу под яву написана оочень давно-в 96-м. Я вообще не понимаю buffer[0] & 0xFFL buffer[8] & 0xFF Ведь биты остаются точно такими же. И сдвиги на 56-это равносильно умножению на 2 в степени 56? Это сообщение отредактировал(а) zone51 - 9.12.2006, 03:32 -------------------- The truth is out there |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
А поему там должно быть 16? Два long и два short = 24 байта. Просто я показал только для первых переменных, надо еще для остальных написать.
В Java расширение byte до int или long знаковое, соответвенно байт 0xFF будет расширен до 0xFFFFFFFF или 0xFFFFFFFFFFFFFFFF. А когда мы делаем buffer[0] & 0xFFL мы это предотвращаем. Чего? Добавлено @ 13:04 Да, только это быстрее. -------------------- 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. |
|||
|
||||
zone51 |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
LSD,
Нет, извините, но там именно 16. Привожу фрагменты программы.
while ( fread(&M1P.NT,16,1,mxb) ) Считываются именно 16 байт, лонг=4 байта, сшорт=2 байта. просто эта программа писалась не для компов а для телефонных АТС. И бинарники эти генерируют АТС. Поэтому такие типы. Спасибо. Это сообщение отредактировал(а) LSD - 10.12.2006, 12:16 -------------------- The truth is out there |
||||||
|
|||||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Ну так надо это дело уточнять. В Java: long - 8 байт, short - 2. И кстати а просто int тогда сколько? -------------------- 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. |
|||
|
||||
zone51 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: нет Всего: 1 |
LSD,
В сырцах я ваще инта не видел-не могу сказать. Могу предложить бинарный файл, сырец целиком извините не могу-чревато. Но в предыдущем посте видно как читает поэтому думаю проблем не будет. Посмотрите пожалуйста. Спасибо. http://slil.ru/23545669 -------------------- The truth is out there |
|||
|
||||
LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Зачем мне бинарный файл, что я с ним делать буду.
Вот код для чтения данных из потока:
Два но:
-------------------- 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. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |