1 | |
Побитовое чтение24.07.2012, 21:42. Показов 10041. Ответов 17
Метки нет (Все метки)
Есть файл видео и мне известна его структура.
Например структура следующая: 8 бит 1 бит 1 бит 1 бит 13 бит и т.д. Как мне считать данные побитово? Или можно только считывать побайтово и выделять потом биты? Если побайтово, то как потом выделить биты из него? Можете объяснить, ну и показать пару примеров. Заранее благодарю.
0
|
24.07.2012, 21:42 | |
Ответы с готовыми решениями:
17
Побитовое чтение/запись в файл Открытие и побитовое чтение jpeg-файла какая функция осуществляет побитовое чтение файла Побитовое увеличение |
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||
24.07.2012, 21:53 | 2 | |||||
но вообще есть еще вопросы с выравниванием и упаковкой
1
|
430 / 431 / 93
Регистрация: 16.07.2012
Сообщений: 886
|
|
24.07.2012, 21:54 | 3 |
1
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
24.07.2012, 22:29 | 4 |
0
|
25.07.2012, 00:51 [ТС] | 5 |
Еще есть небольшой вопрос. Мне надо парсить Transport Stream. Вот его структура
transport_packet()Как теперь считать данные битово понятно, но как мне теперь правильно сравнить значение поля adaptation_field_control с '10' или '01'?
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
25.07.2012, 01:14 | 6 |
pkt.adaptation_field_control == 2 || pkt.adaptation_field_control = 3
тут 2 бита - арифметика банальная еще один момент - размер структуры - 32 бита, то бишь 4 байта для 32 размерной системы все будет ок, но на 64 она будет выравнена до 64 бит чтобы такого не происходило следует использовать pragma'ы своего компилятора (чтото вроде pragma pack)
1
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
25.07.2012, 01:34 | 8 |
alkagolik, каким образом?
я полагаю, что это 102
0
|
25.07.2012, 09:36 [ТС] | 10 | |||||
Возникла еще одна проблема с чтением
Если мне надо считать не в структура, а только в одной поле структуры, то как в этом случае считывать? Пытался сделать так
Добавлено через 9 минут А в unsigned запишется поле длинной 33 бита?
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
25.07.2012, 10:57 | 11 |
Khelleos, нет, так не бывает
в машинах биты не существуют отдельно от байтов хотя бы ваша файловая.система и драйвер жесткого диска побитовое чтение не поддерживает
1
|
25.07.2012, 11:39 [ТС] | 12 | |||||
Тогда как мне реазлизовать следующий код
Добавлено через 2 минуты Думал, реализовать несколько структур для каждого условия, но не слишком ли это? По мне так это будет некрасиво иметь для каждого условия структуру, особенно там где только одно поле. Кстати, а что делать с полем 33 бита? Оно разве запишеться в unsigned?
0
|
Jupiter
|
25.07.2012, 11:45
#13
|
1
|
25.07.2012, 12:12 [ТС] | 14 |
Походу единственный способ - это считывать побайтово, а потом разбирать каждый байт на нужные биты.
А вот тогда лучше ответьте мне на такой вопрос. Есть поле длиной 13 бит. Я считаю это поле в 2 байта. Впервом байте я беру 8 бит(то есть весь байт), а из второго 5 бит. если я потом сложу переменные, в которые я записал 8 и 5 бит, то я получу нужное мне поле(13 бит), да?
0
|
430 / 431 / 93
Регистрация: 16.07.2012
Сообщений: 886
|
|
25.07.2012, 12:17 | 15 |
Нет, не получите. Вам сначала нужно будет сдвинуть 8 бит на пять разрядов влево, а 5 бит на три разряда вправо. Прочитали бы все-таки что-нибудь на тему битовых операций.
1
|
26.07.2012, 01:08 [ТС] | 16 | ||||||||||
Точно, второй байт я сдвинул на 3 разряда вправо, а вот первый байт забыл сдвинуть влево на 5 разрядов.
Добавлено через 12 часов 30 минут Хочу уточнить одну вещь, файл длиной 16 бит, структура файла следующая
Добавлено через 12 минут Напутал, вот так должно быть правильно
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||
26.07.2012, 01:25 | 17 | |||||
вообще както все проще
0x1FFF - маска - первые 13 бит - 1, остальные - 0
1
|
26.07.2012, 01:35 [ТС] | 18 |
Но то, что я предложил тоже правильно(но ваш вариант проще, чем мой)?
0
|
26.07.2012, 01:35 | |
26.07.2012, 01:35 | |
Помогаю со студенческими работами здесь
18
Побитовое сравнение Побитовое вычитание Побитовое замещение Побитовое смещение Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |