L'impression que les valeurs hexadécimales d'un char* tableau en C donne des valeurs bizarres pour l'entrée binaire

Voici un étrange problème qui a été estompe moi pour un peu.

Le programme est écrit en C89, et il lit un fichier dans un char* tableau 16 octets à la fois (à l'aide de fread et d'une taille sizeof(char)). Le fichier est fopen serait avec le "rb" drapeaux. Le tableau est ensuite passé dans une fonction qui prend essentiellement en la 16 les valeurs hexadécimales et se l'enfonce dans une chaîne, chaque valeur séparés par un espace.

Voici où l'étrangeté. La fonction produit une belle vidage hexadécimal, 16 octets à la fois, pour un fichier texte d'entrée que j'ai. Mais il vis, si je l'ai essayer sur une petite image bitmap (j'arrive à la fin avec la sortie de la chaîne comme ffffff88 au lieu de seulement 88.

Les valeurs hexadécimales sont placés dans la chaîne de sortie en utilisant sprintf("%02x ", input[i]); dans une boucle.

Pourquoi serait-ce un travail correctement pour certains fichiers, mais pas les autres?

OriginalL'auteur Kozaki | 2009-11-20