conversion hexa ascii pour écrire dans un fichier [RESOLU] - C++ - Programmation
Marsh Posté le 17-05-2006 à 12:10:31
Citation : (avec un genre de std::ascii <= m'étonnerait que ca existe) |
c'est surtout qu'on s'en fout, tu as justes à ecrires dans le fichier les nombres dont tu possedes la representation base 16 dans une chaine
apres le fait qu'il faille interpreter ces données comme une séquence de caracteres codés en ascii c'est du ressort de l'autre logiciel
le plus c'est de passer par istringstream pour convertir cette representation en entier (avec le manipulateur std::hex)
Marsh Posté le 17-05-2006 à 12:14:41
ben je peux pas demander a l'autre fichier d'interpreter les entrées différemment, c'est pas de mon ressort
c'est pas un fichier C++ qui est utilisé derriere etc
Marsh Posté le 17-05-2006 à 12:17:49
quoi ?
je sais pas si t'a compris que pour ecrire dans un fichier un nombre dont la representation hexa est "0000800E080B36BAEA3F520..." on n'a pas besoin de savoir que c'est une sequence de caractere ascii ou autre
Marsh Posté le 17-05-2006 à 13:21:58
je reprends :
comment convertir "0000800E080B36BAEA3F520" en " 6ºê?R u" ?
Marsh Posté le 17-05-2006 à 13:53:37
skelter a écrit : |
Marsh Posté le 17-05-2006 à 14:01:00
ne change rien, je cherche à faire ca :
en fait pour reprendre plus clairement le fond du probleme, et en me servant de ultraedit et de la représentation hexa, je souhaiterais obtenir
depuis la chaine :
Citation : 0000800E080B36BAEA3F520E20127587 |
le résultat suivant (en gras):
Citation : |
Marsh Posté le 17-05-2006 à 14:06:15
donc tu représente un caractère par un entier exprimé en hexa ...
Marsh Posté le 17-05-2006 à 14:14:44
en gros je rentre ma chaine dans un iss par bouts de deux caracteres, exemple
Code :
|
? apparemment ca maÿrde
Marsh Posté le 17-05-2006 à 14:16:56
skelter t'a déjà donné la méthode :
skelter a écrit : le plus simple c'est de passer par istringstream pour convertir cette representation en entier (avec le manipulateur std::hex) |
tu prends chacun de tes nombres en hexa, et tu les écris dans ton flux. Ensuite, tu relis ce que tu viens d'écrire en précisant que c'est de la représentation hexa. Pour cela, tu utilises le manipulateur std::hex
Après, le programme qui lira ton fichier y trouvera ce qu'il veut. Si c'est un programme qui lit du ascii, il interpretera toutes tes valeurs comme des caractères codés en ascii et ça donnera le résultat que tu attends. Si c'est un programme qui lit de l'hexa, il lira la séquence hexa que tu as mise dans ton fichier.
Tu n'as pas à t'occuper de ça ; tout ce que tu fais, c'est prendre tes valeurs et les mettre dans un fichier.
Marsh Posté le 17-05-2006 à 14:20:37
ben donc je suis pas tres loin avec la méthode du dessus,
j'ai pris un nombre hexa
que j'ai passé dans un flux iss et j'ai spécifié la représentation hexa par std::hex
mais la valeur de sortie reste "80" (au lieu de )
?
EDIT : ca peut pas etre un ostringstream ? genre comme ca :
Code :
|
Marsh Posté le 17-05-2006 à 14:26:03
std::hex à un impacte uniquement si tu lit un entier
Code :
|
Marsh Posté le 17-05-2006 à 14:28:09
ok merci bien skelter, franceso, _darkalt3_
Marsh Posté le 17-05-2006 à 14:42:33
ps : comment déclarer le topic "résolu" ?
EDIT : j'ai rien dit
Marsh Posté le 17-05-2006 à 11:57:33
j'ai un bleme lors de l'utilisation de la méthode std::ofstream
voila, donc j'ai des valeurs de type hexa, ressemblant plus ou moins a ca :
"0000800E080B36BAEA3F520..."
(std::string plus précisément)
je souhaite ajouter ces valeurs dans un fichier, mais de manière à obtenir ca :
" 6ºê?R u"
(soit leur conversion ASCII), ceci afin de pouvoir traiter le fichier avec un autre logiciel.
Quelqu'un aurait il une idée ?
jusqu'a présent j'en étais arrivé la :
(trame_video, le contenu hexa de ma trame.)
Idée :
faut il passer par un istringstream et rentrer la trame video pour la convertir ? (avec un genre de std::ascii <= m'étonnerait que ca existe)
d'autres idées ?
Message édité par Thordax le 17-05-2006 à 14:44:42
---------------
Atari 520 ST 256 Ko