2

Je travaille actuellement sur visual C++ 2008 express edition. Mon projet repose sur la lecture d'images satellites et l'application d'un traitement d'image sur celles-ci. Chaque fichier image a un format ".0FM" et une taille de 8Mb. Jusqu'à présent, j'ai été capable de lire le fichier ("* .0FM") en utilisant un FileStream et dans un tableau Byte, la taille du tableau d'octets est de 8 000 000. J'ai ensuite converti chaque élément du tableau d'octets en Decimal, donc maintenant chaque élément du tableau a des valeurs allant de 0 à 255. Maintenant, je dois convertir chacune de ces valeurs décimales dans le tableau en ses valeurs binaires. E.g., 86 devrait être converti en 1010110convertir Byte en bit

Je suis vraiment coincé ici. J'ai essayé System::Decimal::GetBits() méthode, mais tout cette méthode fait est qu'il stocke 86 en bits [0],

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

Ce code entraîne dans le stockage de la valeur 86 dans buf_bits [0], je ne suis pas 1010110.

+2

Pouvez-vous svp expliquer pourquoi avez-vous besoin les bits? On dirait que tu fais quelque chose de très étrange. – Drakosha

Répondre

0

Vous ne travaillez jamais directement avec les bits. Laissez-les comme octets. Si vous avez besoin de vérifier des drapeaux ou quelque chose utiliser quelque chose comme la technique suivante:

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

D'abord, si vos valeurs sont comprises entre 0 et 255, vous devez utiliser octet (ou unsigned char). Than, vous devez utiliser les opérateurs Shift left/Shift right.

dans le code psuedo, où num est votre 0-255 octet:

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

Salut ... je dois afficher ces valeurs d'octets dans le contrôle de la boîte à images. Donc, je suppose que si je convertis les valeurs d'octets en bits alors il serait peut-être facile d'afficher les valeurs d'octets dans le contrôle de la boîte d'image .. – JAYMIN

+0

dans le tableau de bits que vous avez 0s et 1s. utilisez-les de la manière que vous voulez. imprimer directement dans l'image peut être difficile, parce que vous avez besoin d'une image, ses pixels représentent un 0s graphique et 1s. – sagie

Questions connexes