С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
wiezz
0 / 0 / 0
Регистрация: 31.03.2011
Сообщений: 2
#1

Чтение бинарника по биту - C++

03.04.2011, 18:45. Просмотров 491. Ответов 4
Метки нет (Все метки)

Всем привет! Уважаемые, помогите пожалуйста!
Есть бинарный файл. Из него надо получить число, закодированное, например, в старших трех битах второго байта. Как это реализовать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2011, 18:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение бинарника по биту (C++):

Чтение бинарника fortran в C++ - C++
Добрый день, кодер я начинающий поэтому даже приблизительно не знаю как реализовать следующую функцию. В общем есть бинарник fortran,...

Чтение нескольких байт из бинарника - C++
Цель задания: написать программу, использующую сведения о формате файла и выводящую информацию об обрабатываемом файле. Ну вот я...

Запись/чтение нуля из бинарника - C++
Здравствуйте! Такая проблема обозначилась: есть некоторая переменная типа unsigned int tt, которая на каждом шаге цикла должна...

Чтение 16-и битных слов из бинарника (загрузка Wav) - C++
Привет! Загружаю WAV. Данные в файле для формата звуковых данных с дискретностью 16 бит монофонического сигнала хранятся в массиве...

Обращение к конкретному биту числа - C++
Доброго дня! Объясните, пож-та, вот такую запись, характеризующую обращение к конкретному биту числа: int p=123; (p&(1<<0)!=0); ...

Доступ к нужному биту через битовые поля - C++
Добрый день! Допустим, есть такой код. #include <iostream> #include <conio.h> using namespace std; struct byte { unsigned...

4
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.04.2011, 21:07 #2
Цитата Сообщение от wiezz Посмотреть сообщение
надо получить число, закодированное, например, в старших трех битах второго байта. Как это реализовать?
Считываете второй байт и накладываете маску для выделения нужных битов.
1
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
03.04.2011, 21:12 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
#include<fstream>
 
union{
    char sym;
    struct{
        unsigned u0:5;
        unsigned u1:3;
    }strObj;
}uniObj;
 
int main(){
    std::ifstream ifs("1.txt", std::ios::binary);
    if(!ifs){std::cerr<<"File not found"; return 1;}
    ifs.seekg(1).read(&uniObj.sym, 1); // чтение второго байта
    ifs.close();
    std::cout<<uniObj.strObj.u1<<"\n"; // три старших бита (unsigned int)
}
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
03.04.2011, 21:23 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
igorrr37, зачем же все так усложнять.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main()
{
    unsigned char byte = 0;
    FILE *pfile = fopen("file.txt", "rb");
 
    fseek(pfile, 1, SEEK_CUR);
    fread(&byte, 1, 1, pfile);
 
    // byte содержит второй байт файла
    // ((byte & 0xE0) >> 5) - старшие три бита 
    
    printf ("%#x\n", (byte & 0xE0) >> 5);
}
4
wiezz
0 / 0 / 0
Регистрация: 31.03.2011
Сообщений: 2
04.04.2011, 11:59 #5
Спасибо огромное!
0
04.04.2011, 11:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2011, 11:59
Привет! Вот еще темы с ответами:

Считывание из бинарника - C++
FILE* fl=fopen((ExtractFilePath(ParamStr(0))+r_buf+&quot;.bin&quot;).c_str(), &quot;w&quot;); char* l=r_buf.c_str(); WORD l1=strlen(l); ...

Компиляция бинарника на gcc - C++
Задача: нужно скомпилировать сырой бинарник на gcc. Он будет грузиться по адресу 0x10000 и туда же будет передаваться управление. И мне...

Восстановление списка из бинарника - C++
Есть 2 функции bool SaveToFile(char* FileName, void** ArrRestourant) {TFile f; if ((f = fopen(FileName, &quot;wb&quot;)) == NULL){return...

Переделать в коде чтение из файла в чтение с клавиатуры - C++
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл должен начинаться со слова, между...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.