|
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
|
|||||||||||
Бинарное чтение файла12.04.2013, 11:29. Показов 8778. Ответов 29
Метки нет (Все метки)
Добавлено через 14 часов 26 минут В общем, кое-как решил проблему, правда в другом файле, теперь считает кол-во кадров правильно. Теперь проблема в дугом, как из двух битов бинарных данных получить нормальное десятичное число? Как только я не пробовал переводить в число - ничего не выходит. Могу сбросить файл, с которого нужно считать значения. Код:
0
|
|||||||||||
| 12.04.2013, 11:29 | |
|
Ответы с готовыми решениями:
29
Бинарное чтение файла Бинарное чтение из файла Бинарное чтение файла |
|
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
|
|
| 14.04.2013, 21:45 [ТС] | |
|
Ну что, никто не знает?
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|||||||
| 14.04.2013, 22:56 | |||||||
|
Опишите задачу подробней. Где у вас эти 2 бита? В переменной? В переменой не может быть просто 2 бита, как минимум это укзаатель на какой то кусок памяти, кратный байту. То есть у вас там есть хотя бы байт. А биты какие? младшие? страшие? из середины? все по очереди?
1
|
|||||||
|
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
|
||
| 14.04.2013, 22:59 [ТС] | ||
![]() У меня есть бинарный файл. Вот/ C него мне нужно получить десятичные значения. Спрашивал у ребят как они это сделали, они сказали явным приведением типов, то есть в php integer 32 бита, а мне нужно всего 16, ну или как-то так. Почитал, в php такого нету.. Как быть? И да, простите, я там ошибку сделал, не 2 бита, а 2 байта. p/s/ C файла читается по 2 байта, то есть 2 байта = 1 десятичное значение.
0
|
||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||||
| 14.04.2013, 23:04 | ||||||
|
В пхп нет, зато в пхп есть такая функция http://php.net/manual/ru/function.unpack.php
Формат тут http://www.php.net/manual/ru/function.pack.php 2 байта (а не бита) это short. распаковыывайте бинарные данные функцией unpack по 2 байта. а даже если бы её небыло, не что не мешает взять просто отдельно 2 байта, старший сдвинуть на 8 бит и сложить с младшим.
0
|
||||||
|
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
|
||
| 14.04.2013, 23:12 [ТС] | ||
|
Подскажите по своему коду, как мне правильно написать, если есть переменная $elem.
0
|
||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 14.04.2013, 23:13 | |
|
Значит не так пробовали
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
|
||
| 14.04.2013, 23:16 [ТС] | ||
|
Добавлено через 2 минуты Могу сбросить то, что есть на данный момент для наглядности...
0
|
||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||||
| 14.04.2013, 23:19 | ||||||
0
|
||||||
|
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
|
|||||||
| 14.04.2013, 23:26 [ТС] | |||||||
|
Проверял так:
0
|
|||||||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 14.04.2013, 23:30 | |
|
unpack работает, если не правильно что то, значит не совсем точное описание формата файла.
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
|
|
| 14.04.2013, 23:32 [ТС] | |
|
Посмотрим еще раз.. Есть бинарный файл.. Не из ноликов и единичек, а из крякозябров. Мне нужно читать по 2 байта. По файлу в бинарном виде расставлены значения 16384 - метки. Их должно бть 400, не находит ни одной. Что делать - не понимаю.
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|||
| 14.04.2013, 23:36 | |||
|
Добавлено через 55 секунд можете сказать первые хотя бы числа, какие там, хотя бы несколько первых чисел?
0
|
|||
|
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
|
|
| 14.04.2013, 23:39 [ТС] | |
|
http://troyan.dle-templates.info/3.php Вот что оно выводит. Сейчас узнаю первые 64 канала...
Добавлено через 1 минуту Там каждый кадр должен начинаться со значения 30 или 31, или что-то очень около того. (1ый кадр после метки 16384)
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 14.04.2013, 23:41 | |
|
что значит кадр? так по 2 байта, или 2 байта + n-байт на кадр, а потом опять 2? это же уже не по 2 байта нужно читать...
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
|
||||||
| 14.04.2013, 23:45 [ТС] | ||||||
|
Вот задание из лабы, точнее о структуре файла
Кликните здесь для просмотра всего текста
. Характеристика кадровой структуры информации
бортового регистратора Для проведения автоматизированной обработки ПИ, накопленной БР, на определенном этапе обработки создается файл-копия кодовых значений регистрируемых параметров. Эти значения в виде 16-ти разрядных двоичных кодов записываются в файл-копию. Содержимое файла-копии имеет кадровую структуру, т.е. представляет собой последовательность информационных кадров. Автоматизированная обработка файла-копии осуществляется последовательно по кадрам. В соответствии с алгоритмами контроля в процессе обработки из каждого кадра выбираются значения контролируемых АП, служебных данных, анализируются состояния РК и т.д. Поэтому прежде чем получить значения контролируемых параметров необходимо выделить (распознать) информационный кадр. Для этого используют синхронизирующие кадровые адресные параметры (сигналы), которые в зависимости от БР могут регистрироваться, например, в первом или последнем коде кадра. В соответствии с циклограммой БР МСРП-64-2 кадровый параметр регистрируется в 14 разряде кода последнего (63-го) канала каждого кадра. Наличие кадрового сигнала означает значение "1" в этом разряде, отсутствие - "0". Информация БР может содержать сбои связанные с работой аппаратуры, повреждением носителя БР, ударными нагрузками, воздействием агрессивных жидкостей, морской воды и т.д. Эти факторы могут приводить к пропуску каналов (кодов параметров), пропаданию или высыпанию адресных сигналов и т.д. Сбои приводят к нарушению кадровой структуры ПИ. В случае отсутствия сбоев в кадровой структуре ПИ кадровые параметры повторяются через каждые 64 канала (кода). Кроме того, в большинстве случаев первый кадр файла-копии ПИ является не полным (например, как в приведенном выше фрагменте первый кадр содержит меньше чем 64 кода), то есть начало файла-копии не всегда совпадает с началом кадра. Этот фрагмент неполного кадра, как правило, пропускается (не рассматривается при обработке) и обработка файла-копии начинается с первого не сбойного кадра. Таким образом, для определения начала кадра, с которого начинается обработка файла-копии, просматривают фрагмент ПИ и находят код с кадровым параметром (код конца кадра). Этот код является концом первого кадра файла – копии. Если этот фрагмент ПИ вместе с кадровым параметром «короче» чем один кадр, то его пропускают и переходят на следующее слово, т.е. на начало следующего кадра. Продолжая поиск следующего кадрового параметра, аналогично выделяют следующий кадр и, если он не сбойный, то он может участвовать в обработке и т.д. Как правило, выделение кадра сопровождается записью его в отдельный массив. Размер выделяемого массива задается с избытком (обычно кратным длине кадра в словах, например 64*4), так как в ПИ могут быть сбои, приводящие к пропуску кадрового параметра и, следующий кадровый параметр может быть найден более чем через 64 кода. После того, как кадр выделен, выполняется проверка его на целостность (полноту). В лабораторной работе выделенные кадры необходимо проверять на равенство длины кадра значению 64. Если длина кадра меньше 64 значений – кадр «короткий», если больше 64 – «длинный». Для каждого выявленного сбойного кадра выдать на экран сообщение о характере сбоя. Вот пример на С++
0
|
||||||
|
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
|
|
| 14.04.2013, 23:56 [ТС] | |
|
Вот начало файла http://troyan.dle-templates.info/il76_c
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 14.04.2013, 23:59 | |
|
SIZE в коде с++ чему равно?
0
|
|
|
0 / 0 / 0
Регистрация: 27.01.2011
Сообщений: 119
|
||
| 15.04.2013, 00:00 [ТС] | ||
0
|
||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||||||||||
| 15.04.2013, 00:03 | ||||||||||||
|
И ещё, судя по фразе
0
|
||||||||||||
| 15.04.2013, 00:03 | |
|
Помогаю со студенческими работами здесь
20
Бинарное чтение из файла с пoмощью функции fread() Максимально эфективное бинарное чтение из файла под Windows Бинарное дерево поиска. Как осуществить запись в файл и чтение из файла Бинарное чтение\ запись Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|