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

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

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

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

19.12.2012, 12:45. Просмотров 667. Ответов 7
Метки нет (Все метки)

вот функция, которая считывает дибайты

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);
}
и в итоге она выводит расчеты свои.. надо сделать чтобы считывались трибайты.. помогите кто знает...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2012, 12:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа считывания трибайтов) или как они называются.) (C++):

Программа считывания - C++
Прошу помогите написать программу которая считывает текст с клавиатуры и выводит на экран только слова состоящие из заданного количества...

Программа для считывания содержимого директории (Си -> Си++) - C++
#include &lt;stdio.h&gt; #include &lt;dirent.h&gt; int main(int argc, char ** argv) { DIR * d; struct dirent * entry; if (argc != 2) { ...

Не работает программа считывания последовательности из файла - C++
Пытаюсь сделать программу, которая достает из текстового файла последовательности, и предлагает их решить. Если пользователь не правильно...

Программа считывания литерной матрицы из текстового файла не выходит из цикла - C++
Доброго времени суток. Программа считывания литерной матрицы из текстового файла не выходит из цикла. Похоже что программа не достигает...

Как называются массивы элементов для сравнения времени работы сортировок? - C++
Гугл молчит. (

Как называются "выражения", которые заканчиваются точкой с запятой? - C++
Так как же все-таки называются &quot;выражения&quot;, которые заканчиваются точкой с запятой? cout &lt;&lt; endl; Можно ли данное выражение назвать...

7
ValeryS
Модератор
6681 / 5090 / 477
Регистрация: 14.02.2011
Сообщений: 17,090
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 мегабайт
и думаешь это в стек влезет??
программа сразу рухнет
0
AnyaSh
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 12
19.12.2012, 12:57  [ТС] #3
Цитата Сообщение от ValeryS Посмотреть сообщение
размер массива 16777215*4=67108860 более 60 мегабайт
и думаешь это в стек влезет??
программа сразу рухнет
тьфу..для дибайтов там размер 65536...
а для трибайтов 16777215
0
ValeryS
Модератор
6681 / 5090 / 477
Регистрация: 14.02.2011
Сообщений: 17,090
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
от размера переменной зависит количество элементов в массиве?
0
AnyaSh
0 / 0 / 0
Регистрация: 19.12.2012
Сообщений: 12
19.12.2012, 14:30  [ТС] #5
Дибайт - это два байта. Если имеется файл длиной N байт, то количество всех возможных пар двух байт (дибайт), идущих подряд равно N-1

Программа считывания трибайтов) или как они называются.)
а мне надо трибайты..то есть 3 байта...
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.12.2012, 14:42 #6
Цитата Сообщение от ValeryS Посмотреть сообщение
3 байта нет такого можно взять unsigned int 4 байта
Если нет такого стандартного типа, то это ещё не означает, что данное не может весить 3 байта. Во многих растровых графических файлах цвет трёхбайтный. Да, в оперативе на эти 3 байта придётся отвести 4, если нужна отдельная переменная. А в файле? А в массиве растровых данных в той же оперативе? В видеопамяти?
0
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)..
0
Фрэй
1 / 1 / 0
Регистрация: 11.01.2014
Сообщений: 17
07.09.2015, 00:08 #8
Не подскажете, откуда эта картинка с дибайтами?
0
07.09.2015, 00:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2015, 00:08
Привет! Вот еще темы с ответами:

Два простых числа называются «близнецами», если они отличаются друг от друга на 2 (например, 41 и 43). - Turbo Pascal
Два простых числа называются «близнецами», если они отличаются друг от друга на 2 (например, 41 и 43). Напечатать все пары «близнецов» из...

Программа считывания символов - Pascal
Нужна прога на паскале которая считает сколько символов в слове Например: вводим: мама Ответ: м-2 ...

не понимаю как реализовать одновременную работу процессов, как сделать так, что бы они одновременно проверяли доступен ресурс или нет - Visual Basic
Здравствуйте! Подскажите, как можно одновременно запустить проверку условия. Я пытаюсь написать программу решения проблемы обедающих...

Как называются символы | и ^ - Иностранные языки
Пишу прогу на C# где мне нужны литеры, не знаю как назвать по английски литеры | и ^ Может кто-то может помочь? Добавлено через 13...


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

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

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