2015-01-11 3 views
0

Say, у меня есть массив символов в C++ с 64 блоков, каждый блок имеет 64 байт памяти, выделенной:Создание растрового изображения в первом блоке массив символов в C++

char **disk = new char*[64]; 
for (int i = 0; i < 64; i++) { 
    disk[i] = new char[64]; 
} 

И я хочу установить bitmap в первом блоке массива char. Растровое изображение содержит только целые числа. Таким образом, диск [0] должен быть растровым. Растровое изображение содержит эфир 1 для занятых и 0 бесплатно, указывая остальные блоки в массиве, если они заняты или свободны. 1 бит для каждого блока.

Но я не знаю, как реализовать растровое изображение для определенного размера, который мне нужен, потому что битмап также должен быть 64 байта, и он включает целые числа для 64 блоков, как я могу его достичь?

Это требование к проекту, поэтому ... Я не могу определить растровое изображение вне массива.

ответ

1

Вместо того, угон, какая часть массива означает, что вы должны просто сделать свой собственный тип:

struct MyType 
{ 
    bitmap_type bitmap; // is this a uint64_t[8]? Or a std::bitset? Or... ? 
    char data[63][64]; // or whatever dimensions 
}; 

MyType* data = new MyType; 

Таким образом, все пользователи вашего типа знают, что data->bitmap это растровый и data->data это фактические данные, вместо того, чтобы помнить, что data[0] является особенным, но data[x] для x>0 - это настоящие данные.

+0

но это требование к проекту, первый блок представляет битмап .... – Noah

+0

@Noah всегда может 'reinterpret_cast' в' MyType' :) – Barry

+0

Не могли бы вы рассказать о своем ответе, я не понимаю его ... , – Noah