J'essaye d'écrire un .bmp en C++ mais char non signé ne peut pas tenir une valeur assez élevée pour mes besoins et d'autres types de données ajoutent le remplissage en raison de l'alignement spécifique d'octet qui fait un désordre des choses. Existe-t-il un autre type de données pouvant contenir une valeur plus élevée qui n'ajoutera pas de remplissage (ou un moyen de rendre une valeur plus élevée)?Ecriture de fichier binaire en C++, carigned unsigned est trop petit mais d'autres types de données ajoutent un padding, existe-t-il une alternative?
0
A
Répondre
2
Si vous écrivez d'abord vos données dans un tableau, il n'y a pas de remplissage.
2
Il semble que vous ne compreniez pas comment les données sont stockées. Si vous avez une image bmp en mémoire, elle peut être conservée dans une structure interne (struct/class), mais vous pouvez la sérialiser vers un tableau de caractères non signés (octets) que vous écrivez dans un fichier. Un fichier ouvert en mode binaire n'ajoute rien de plus que ce que vous écrivez.
Quel rembourrage? Voulez-vous dire quelque chose comme 'struct Pixel {BYTE rouge; BYTE vert; BYTE blue} 'ayant une taille de 4 pour des raisons d'alignement? – dan04