2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 char hex
Сообщение11.10.2009, 11:58 
У меня это прога по ОСО ещё должна делать следующее
посчитать сколько вхождений в my.bin файле каждого 16-ти ричного числа. Что то туплю понять не могу не получается никак....

 
 
 
 Re: char hex
Сообщение11.10.2009, 12:11 
Аватара пользователя
Код:
unsigned short counter[65535] = {0};
while (read_16_bytes_to_x)
    counter[x]++;

 
 
 
 Re: char hex
Сообщение11.10.2009, 12:40 
короче вот моя прога
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
#include <windows.h>
#include <windowsx.h>
#include <string.h>
#include <iostream.h>

int main()
{
    DWORD dwSectorsPerClusters;
    DWORD dwBytesPerSectors;
    DWORD dwNumberOfFreeClusters;
    DWORD dwTotalNumberOfClusters;

    GetDiskFreeSpace("C:\\",&dwSectorsPerClusters,
    &dwBytesPerSectors,&dwNumberOfFreeClusters,
    &dwTotalNumberOfClusters);

    cout << "\ndwSectorsPerClusters=" << dwSectorsPerClusters <<"\n";
    cout << "dwBytesPerSectors=" << dwBytesPerSectors <<"\n";
    cout << "dwNumberOfFreeClusters=" << dwNumberOfFreeClusters <<"\n";
    cout << "dwTotalNumberOfClusters=" << dwTotalNumberOfClusters <<"\n";

    CopyFile("layout.bin","copy.bin",true);
    cout << "\nFile layout.bin was copied as copy.bin check it out \nand press ENTER to delete it";
    getchar();
    DeleteFile("copy.bin");
    cout << "File copy.bin was deleted\n";

    unsigned short counter[65535] = {0};
    while (read_16_bytes_to_x)
    counter[x]++;

    cout << counter;

    //    DeleteFile("layout.bin");
    //cout << "File layout.bin was deleted\n";

 return 0;
}


 

не получается

 
 
 
 Re: char hex
Сообщение11.10.2009, 13:26 
Аватара пользователя
mycoding
Вообще-то read_16_bites_to_x -- это псевдокод был, типа читаем в переменную x два байта из файла. Я думал это очевидно.

 
 
 
 Re: char hex
Сообщение11.10.2009, 13:29 
а ты можешь пожалуйста модифицировать прогу или если не можешь , то ответ пожалуйста на вопрос.
Я понял так, надо в бинарной форме считать файл(но сделать это надо средствами Winapi), как это сделать?

 
 
 
 Re: char hex
Сообщение11.10.2009, 14:34 
2mycoding
Читать файл по два байта можно примерно так (не проверял :) ):
Код:
unsigned short x;

HANDLE File=CreateFile
    (
        "my.bin",
        GENERIC_READ,
        0,
        NULL,
        OPEN_EXISTING,
        0,
        NULL
    );

while(ReadFile(File, &x, 2, NULL, NULL)) counter[x]++;

CloseHandle(File);


Кстати, что такое шестнадцатеричное число? Вот meduza предположил, что вам нужно на самом деле подсчитать частоты 16-ти битных (aka 2-х байтных) чисел. Уточните постановку задачи.

 
 
 
 Re: char hex
Сообщение11.10.2009, 15:14 
Аватара пользователя
Circiter в сообщении #250893 писал(а):
Кстати, что такое шестнадцатеричное число? Вот meduza предположил, что вам нужно на самом деле подсчитать частоты 16-ти битных (aka 2-х байтных) чисел. Уточните постановку задачи.

Ой, прочитал как "шестнадцатибитное". Но сути этого не меняет: также создается массив (только на 256 байт, а не на 65536), обнуляется и при считывании очередного байта из файла соответствующий элемент массива инкрементируется.

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group