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

Программа считывания трибайтов) или как они называются.) - C++

Восстановить пароль Регистрация
 
AnyaSh
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 12
19.12.2012, 12:45     Программа считывания трибайтов) или как они называются.) #1
вот функция, которая считывает дибайты

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
31
32
33
34
35
36
std::string HexFunction(char * input, char * output)
{
    const unsigned long long int constant = 16777215;
    unsigned int numOfDiBytes = 0;
    int numOfHexes[constant];
    for(int i = 0; i < constant; i++)
    {
        numOfHexes[i] = 0;
    }
    std::ifstream inputFile(input, std::ios::binary);
    unsigned long x = 0;
    char buffer[1];
    inputFile.read(reinterpret_cast<char * >(buffer), 1);           //считывание переменных и записываем int
    while(!inputFile.eof())                 
    {
        numOfDiBytes ++;
        if (x == 0)
        {
            x += buffer[0];
            x = x << 8;
            inputFile.read(reinterpret_cast<char * >(buffer), 1);
            continue;
        }
        x += buffer[0];
        numOfHexes[x]++;
        x = x << 8;
        inputFile.read(reinterpret_cast<char * >(buffer), 1);
        if(inputFile.eof())
        {
            break;
        }
    }
    numOfDiBytes = numOfDiBytes - 1;
    inputFile.close();
    return HexToFile(&numOfHexes[0], constant, output, numOfDiBytes);
}
и в итоге она выводит расчеты свои.. надо сделать чтобы считывались трибайты.. помогите кто знает...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2012, 12:45     Программа считывания трибайтов) или как они называются.)
Посмотрите здесь:

Программа считывания C++
C++ Как называются массивы элементов для сравнения времени работы сортировок?
Программа для считывания содержимого директории (Си -> Си++) C++
Разбить число на множители и определить простые они или нет C++
C++ Программа считывания литерной матрицы из текстового файла не выходит из цикла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
19.12.2012, 12:53     Программа считывания трибайтов) или как они называются.) #2
Цитата Сообщение от AnyaSh Посмотреть сообщение
const unsigned long long int constant = 16777215;
* * unsigned int numOfDiBytes = 0;
* * int numOfHexes[constant];
размер массива 16777215*4=67108860 более 60 мегабайт
и думаешь это в стек влезет??
программа сразу рухнет
AnyaSh
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 12
19.12.2012, 12:57  [ТС]     Программа считывания трибайтов) или как они называются.) #3
Цитата Сообщение от ValeryS Посмотреть сообщение
размер массива 16777215*4=67108860 более 60 мегабайт
и думаешь это в стек влезет??
программа сразу рухнет
тьфу..для дибайтов там размер 65536...
а для трибайтов 16777215
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,048
19.12.2012, 14:00     Программа считывания трибайтов) или как они называются.) #4
Цитата Сообщение от AnyaSh Посмотреть сообщение
дибайтов ... трибайтов
что ты под этим подразумеваешь???
размер переменной 2 байта ? и три байта?
2 байта это unsigned shor int
3 байта нет такого можно взять unsigned int 4 байта
или создавать свою структуру
C++
1
2
3
4
5
6
struct tribyte
{
unsigned char byte1;
unsigned char byte2;
unsigned char byte3;
}
разумеется я говорю о 32 битных ОС
в 16 битных размеры int другие

Цитата Сообщение от AnyaSh Посмотреть сообщение
тьфу..для дибайтов там размер 65536...
а для трибайтов 16777215
от размера переменной зависит количество элементов в массиве?
AnyaSh
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 12
19.12.2012, 14:30  [ТС]     Программа считывания трибайтов) или как они называются.) #5
Дибайт - это два байта. Если имеется файл длиной N байт, то количество всех возможных пар двух байт (дибайт), идущих подряд равно N-1

Программа считывания трибайтов) или как они называются.)
а мне надо трибайты..то есть 3 байта...
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.12.2012, 14:42     Программа считывания трибайтов) или как они называются.) #6
Цитата Сообщение от ValeryS Посмотреть сообщение
3 байта нет такого можно взять unsigned int 4 байта
Если нет такого стандартного типа, то это ещё не означает, что данное не может весить 3 байта. Во многих растровых графических файлах цвет трёхбайтный. Да, в оперативе на эти 3 байта придётся отвести 4, если нужна отдельная переменная. А в файле? А в массиве растровых данных в той же оперативе? В видеопамяти?
AnyaSh
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 12
19.12.2012, 14:54  [ТС]     Программа считывания трибайтов) или как они называются.) #7
Цитата Сообщение от ValeryS Посмотреть сообщение
от размера переменной зависит количество элементов в массиве?
да


должен быть выходной файл такой (для дибайтов)
дибайт кол-во встреч
0x0000 0
0x0001 0
0x0002 0
0x0003 0
0x0004 0
0x0005 0
0x0006 0
0x0007 0
0x0008 0
0x0009 0
0x000a 0
0x000b 0
0x000c 0
0x000d 0
0x000e 0
0x000f 0
..................
0x3132 2
.................
0x3231 1
...................
0xffff 0

если вы в входном файле передаем значение 1212.. у нас получается 3 дибайта (12,21,12), причем 12 встречается 2 раза, а 21-1 раз..
то есть трибайта..передаем например 12121...3 трибайта (121,212,121)..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2015, 00:08     Программа считывания трибайтов) или как они называются.)
Еще ссылки по теме:

C++ Как называются "выражения", которые заканчиваются точкой с запятой?
C++ Выяснить пересекаются ли эти прямые или они параллельны
Не работает программа считывания последовательности из файла C++

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

Или воспользуйтесь поиском по форуму:
Фрэй
1 / 1 / 0
Регистрация: 11.01.2014
Сообщений: 17
07.09.2015, 00:08     Программа считывания трибайтов) или как они называются.) #8
Не подскажете, откуда эта картинка с дибайтами?
Yandex
Объявления
07.09.2015, 00:08     Программа считывания трибайтов) или как они называются.)
Ответ Создать тему
Опции темы

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