J'essaie de lire le contenu du fichier PNG.comment transformer un tableau de char en un seul nombre entier?
Comme vous le savez peut-être, toutes les données sont écrites en 4 octets dans les fichiers png, à la fois le texte et les nombres. donc, si nous avons le numéro 35234, c'est comme ceci: [1000] [1001] [1010] [0010].
mais parfois les nombres sont plus courts, donc les premiers octets sont zéro, et quand je lis le tableau et le jette de char * à integer, je reçois un mauvais numéro. par exemple [0000] [0000] [0001] [1011] parfois les nombres sont mal interprétés comme des nombres négatifs et des fois comme zéro!
laissez-moi vous donner un exemple intuitif:
char s_num[4] = {120, 80, 40, 1};
int t_num = 0;
t_num = int(s_num);
Je voudrais bien expliquer mon problème! Comment est-ce que je peux jeter de telles matrices dans une valeur simple d'entier?
ok ok ok, laissez-moi changer mon code pour l'expliquer mieux:
char s_num[4] = {0, 0, 0, 13};
int t_num;
t_num = *((int*) s_num);
cout << "t_num: " << t_num << endl;
ici, nous devons obtenir 13 le résultat, ok? mais encore une fois avec cette nouvelle solution, la réponse est fausse, vous pouvez tester sur vos ordinateurs! je reçois ce numéro: 218103808 ce qui est absolument faux!
Votre machine est big-endian ou little-endian .... lire ceci: http://en.wikipedia.org/wiki/Endianness#Big-endian – Nawaz
Comment lancez-vous en passant? poster du code .. – Nawaz
[1000] [1001] [1010] [0010] est deux octets, pas quatre. – TonyK