Форум программистов, компьютерный форум CyberForum.ru

Как считывать дибайты в таких типах файлов как, .png, .txt, .bgi и так далее - C++

Восстановить пароль Регистрация
 
ГеннадийВ
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 34
27.03.2014, 19:19     Как считывать дибайты в таких типах файлов как, .png, .txt, .bgi и так далее #1
Как считывать дибайты в таких типах файлов как, .png, .txt, .bgi и так далее.

пишу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const unsigned int constant = 65535;
unsigned int countDB = 0;
int arrayDB[constant + 1];
 
ifstream in(input, ios::binary);
    in.read(buffer, 1);
 
    while (!in.eof())
    {
        countDB++;
        if (x == 0)
        {
            x = x + buffer[0];
            x = x << 8;
            in.read(buffer, 1);
        }
        else
        {
            x = x + buffer[0];
            arrayDB[x]++;
            x = x << 8;
            in.read(buffer, 1);
        }
    }
    countDB = countDB - 1;
    in.close();
но это работает только для текстовый файлом, как быть с другими типами?
 Комментарий модератора 
Не забывайте теги форматирования кода
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
27.03.2014, 19:38     Как считывать дибайты в таких типах файлов как, .png, .txt, .bgi и так далее #2
Цитата Сообщение от ГеннадийВ Посмотреть сообщение
но это работает только для текстовый файлом, как быть с другими типами?
Дайте весь код... Посмотреть (опробовать), но Ваше утверждение смущает. Она либо работает везде либо нигде..
ГеннадийВ
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 34
27.03.2014, 21:14  [ТС]     Как считывать дибайты в таких типах файлов как, .png, .txt, .bgi и так далее #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void ReadDiBytes(string input)
{
       const unsigned int constant = 65535;
       unsigned int countBD = 0;
       int arrayBD[constant + 1];
    short int x = 0;
    char buffer[1];
    ifstream in(input, ios::binary);
    in.read(buffer, 1);
 
    while (!in.eof())
    {
        countBD++;
        if (x == 0)
        {
            x = x + buffer[0];
            x = x << 8;
            in.read(buffer, 1);
        }
        else
        {
            x = x + buffer[0];
            arrayBD[x]++;
            x = x << 8;
            in.read(buffer, 1);
        }
    }
    countBD = countBD - 1;
    in.close();
}
когда открываю файл(не .txt) переменная х получает значение отрицательное
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
28.03.2014, 12:10     Как считывать дибайты в таких типах файлов как, .png, .txt, .bgi и так далее #4
Что, то не то, идею не понимаю, считываем по байту и сдвиг бинарный тоже на байт....
ГеннадийВ
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 34
28.03.2014, 20:48  [ТС]     Как считывать дибайты в таких типах файлов как, .png, .txt, .bgi и так далее #5
считываем байт и записываем в х, далее считываем второй байт и записываем также в х, в итоге получается один дибайт. Проблему решил, тема закрыта. Кому интересно, нужно было записать unsigned short int x = 0.
Yandex
Объявления
28.03.2014, 20:48     Как считывать дибайты в таких типах файлов как, .png, .txt, .bgi и так далее
Ответ Создать тему
Опции темы

Текущее время: 17:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru