2

В настоящее время я работаю над Visual C++ 2008 Express Edition. Мой проект основан на чтении спутниковых изображений и применении обработки изображений на них. Каждый файл изображения имеет формат «.0FM» и имеет размер 8 МБ.преобразование байта в бит

До сих пор я смог прочитать файл (т. Е. «* .0FM») с использованием FileStream и в массив байтов, размер массива байтов составляет 8 000 000.

Затем я преобразовал каждый элемент из байтового массива в десятичный, поэтому теперь каждый элемент массива имеет значения от 0 до 255. Теперь мне нужно преобразовать каждое из этих десятичных значений в массив в его двоичные значения. Например, 86 следует преобразовать в 1010110

Я действительно застрял здесь. Я попытался System::Decimal::GetBits() метод, но все этот метод не является то, что он хранит 86 в биты [0],

Decimal d = 86; 
array<int>^ buf_bits = Decimal::GetBits(d); 

Этот код приводит к запоминанием значения 86 в buf_bits [0], я не получаю 1010110.

+2

Можете ли вы PLS объяснить, почему вам нужны биты? Похоже, вы делаете что-то очень странное. – Drakosha

ответ

0

Вы никогда не работаете с битами напрямую. Оставьте их как байты. Если вам необходимо проверить флаги или что-то использовать что-то вроде следующей методики:

byte mask = 8; 
if(myFileData[SomeIndex] & mask > 0) 
    // Bit in 4th position is "ON"; 
0

Первого, если ваши значений в диапазоне от 0 до 255, вы должны использовать байты (или символ без знака). Затем вам нужно использовать операторы Shift left/Shift right.

в коде псевдо, где Num твой 0-255 байт:

mask = 1b; 
bits = new array[sizeof(BYTE)]; 
for (i=0; i < sizeof(BYTE); i++) 
{ 
    tmp = num & mask; 
    bits[i] = tmp >> i; 
    mask = mask << 1; 
} 
+0

Привет. Фактически я должен отображать эти значения байтов в элементе управления ящиками. Итак, я предполагаю, что если бы я преобразовал байтовые значения в биты, тогда было бы легко отобразить значения байтов в элементе управления фотошопом. – JAYMIN

+0

в массиве бит у вас есть 0 и 1 сек. используйте их любым способом. печатать непосредственно в окне изображения может быть сложно, потому что вам нужно изображение, его пиксели представляют собой графические 0 и 1 сек. – sagie

 Смежные вопросы

  • Нет связанных вопросов^_^