je vais deviner que les flotteurs sont compris entre 0,0 ... 1,0, alors vous fait comme ceci:
float redf = 0.5f;
unsigned char reduc = redf * 255;
La ROUGES variable sont maintenant 128.
EDIT: exemple complet, l'image sortie en format net PPM.
// Usage
// program > file.ppm
#include <vector>
#include <iostream>
typedef struct
{ /* colors in range 0..1 anything else is out of gamut */
float red, green, blue;
} color;
using namespace std;
int main (int argc, char **argv)
{
int width = 10, height = 10;
vector<color> bitmap; // This should maybe be called floatmap? ;)
// Make an image in memory as a float vector
for(int y = 0; y < height; y++)
{
for(int x = 0; x < width; x++)
{
color temp;
temp.red = ((float)x/width);
temp.green = 0;
temp.blue = ((float)y/height);
bitmap.push_back(temp);
}
}
// output image as an Netppm pixmap
cout << "P3" << endl << width << " " << height << endl << 255 << endl;
for(int y = 0; y < height; y++)
{
for(int x = 0; x < width; x++)
{
int red, green, blue;
red = (unsigned char)(bitmap[y*width+x].red * 255);
green = (unsigned char)(bitmap[y*width+x].green * 255);
blue = (unsigned char)(bitmap[y*width+x].blue * 255);
cout << red << " ";
cout << green << " ";
cout << blue << " ";
}
cout << endl;
}
return 0;
}
J'espère que cela vous aide. Vous pouvez lire environ Netpbm format on wikipedia.
EDIT2: La sortie d'image est clair.
Le résultat est comme ceci:
(minuscule, est-il pas la ligne d'édition 16 à 512x512 ou quelque chose?)
Et la sortie réelle est la suivante:
P3
10 10
255
0 0 0 25 0 0 51 0 0 76 0 0 102 0 0 127 0 0 153 0 0 178 0 0 204 0 0 229 0 0
0 0 25 25 0 25 51 0 25 76 0 25 102 0 25 127 0 25 153 0 25 178 0 25 204 0 25 229 0 25
0 0 51 25 0 51 51 0 51 76 0 51 102 0 51 127 0 51 153 0 51 178 0 51 204 0 51 229 0 51
0 0 76 25 0 76 51 0 76 76 0 76 102 0 76 127 0 76 153 0 76 178 0 76 204 0 76 229 0 76
0 0 102 25 0 102 51 0 102 76 0 102 102 0 102 127 0 102 153 0 102 178 0 102 204 0 102 229 0 102
0 0 127 25 0 127 51 0 127 76 0 127 102 0 127 127 0 127 153 0 127 178 0 127 204 0 127 229 0 127
0 0 153 25 0 153 51 0 153 76 0 153 102 0 153 127 0 153 153 0 153 178 0 153 204 0 153 229 0 153
0 0 178 25 0 178 51 0 178 76 0 178 102 0 178 127 0 178 153 0 178 178 0 178 204 0 178 229 0 178
0 0 204 25 0 204 51 0 204 76 0 204 102 0 204 127 0 204 153 0 204 178 0 204 204 0 204 229 0 204
0 0 229 25 0 229 51 0 229 76 0 229 102 0 229 127 0 229 153 0 229 178 0 229 204 0 229 229 0 229
DO que vous voulez convertir un flotteur dans une chaîne? Ou voulez-vous imprimer la représentation binaire d'une valeur flottante? –
J'ai édité mon post principal. J'ai un tableau dynamique 3D de caractères non signés et je veux stocker la valeur d'octet pour chaque flottant. – Steve
Attendez, voulez-vous dire que vous allez envoyer les données d'image à l'imprimante? Si c'est le cas, vous devrez rechercher CUPS (Common Unix Printing System) ou l'équivalent de Windows. – Frank