Rechercher : dans
Par :

Convertir hexa ascii

Dernière réponse le 24 mai 2009 à 01:02:07 ludoo78, le 18 jan 2008 à 11:15:12 
 Signaler ce message aux modérateurs

Bonjour,

Je suis à la recherche d'un petit executable qui converti de l'hexadecimal vers l'ASCII, c'est à dire retrouvé un texte à partir d'une sequence de nombres hexadécimaux.

Merci beaucoup,

Ludo

Meilleures réponses pour « Convertir hexa ascii » dans :
Sed - Conversion retours chariots DOS (CRLF) / UNIX (LF) VoirConversion format de fichier DOS UNIX / UNIX DOS Préambule Ce qu'il faut savoir Conversion DOS vers UNIX Conversion UNIX vers DOS Préambule Il existe déjà des utilitaires (dos2unix et unix2dos) qui s'acquittent très bien ce cette...
Système hexadécimal VoirSystème hexadécimal Les nombres binaires étant de plus en plus longs, il a fallu introduire une nouvelle base : la base hexadécimale. La base hexadécimale consiste à compter sur une base 16, c'est pourquoi au-delà des 10 premiers chiffres on a...

1

SebManfred, le 18 jan 2008 à 11:21:56
  • +1

à mon avis, ça ira beaucoup plus vite de te faire ton petit exe en C++ que de le chercher sur le net... il suffit de convertir les nombres hexadécimaux 2 à 2 pour reconstituer les octets de ta chaine de caractères ACSII et d'enregistrer le tout dans un fichier .txt

Répondre à SebManfred

2

ludoo78, le 18 jan 2008 à 11:23:26

Le truc c'est que la programmation, c'est pas trop mon truc. Pourriez vous m'aider la deçu.

Merci

Répondre à ludoo78

3

ludoo78, le 18 jan 2008 à 12:37:16

Il y a plus personne?
Quelqu'un pourrait-il me conseiller pour faire un petit programme qui me convertirait des données hexa en texte.
Please.

Répondre à ludoo78

4

SebManfred, le 18 jan 2008 à 12:49:53

Tu as une plateforme de développement? (genre Visual Studio)

Répondre à SebManfred

5

ludoo78, le 18 jan 2008 à 14:33:46

Oui, j'ai dev C++

Répondre à ludoo78

6

SebManfred, le 18 jan 2008 à 14:47:39

Bon, ton programme, tu veux qu'il fasse quoi? (arguments, retour, comportement (options), etc...)

Répondre à SebManfred

7

Char Snipeur, le 18 jan 2008 à 16:01:27

Un truc du genre :

#include <stdio.h>
int main(int argc, char** argv)
{
      unsigned int a,compt=0;
      char c,s[1024];
      while(1)
          {
           scanf("%x",&a);
           c=char(a);
           s[compt++]=c;
           }
      s[compt]='\0';
      printf("%s",s);
return 0;
}

?
J'ai pas testé, en particulier, le %x qui attend un entier hexadecimal non signé (ce que tu cherche).
J'utlise d'ailleur scanf plutôt que cin, à cause justement du %x précisant l'hexadecimal. Je ne sais pas si il y a l'équivalent dans iostream.
Salutation ! Quand on sait pas, on touche pas !JBT
Char Snipeur

Répondre à Char Snipeur

8

jee pee, le 18 jan 2008 à 17:17:40

Salut,

en allant sur http://le.wiki.free.fr/ tu récupères le fichier convertisseur.html et tu le copies sur ta machine, cela permet de faire toutes les conversions

cordialement

Répondre à jee pee

9

ludoo78, le 18 jan 2008 à 17:42:36

Merci pour tous.

CharSniper
Ton programme ne fonctionne pas je crois. Je vais essayer de le comprendre pour voir ce qui va pas (c'est pas une mince affaire lol)

SebManfred
Mon programme je veux qu'en entrée je lui donne une sequence (plus ou moins longue) en hexadecimal et qu'il me donne la convertion en chaine de caractere ASCII.

jee pee,
Ton convertisseur n'est pas très efficace, qu'en la séquence est trop longue, il renvoi n'importe quoi.

Répondre à ludoo78

10

jee pee, le 18 jan 2008 à 17:51:29
  • +1

C'est combien trop long ?

chaque caractère hexa doit être séparé par un blanc, une virgule :

Tiens un poeme que j'aime :

42, 61, 75, 64, 65, 6c, 61, 69, 72, 65, 20, 3a, 20, c0, 20, 75, 6e, 65, 20, 50, 61, 73, 73, 61, 6e, 74, 65, 0a, 0a, 0a, 20, 20, 09, 4c, 61, 20, 72, 75, 65, 20, 61, 73, 73, 6f, 75, 72, 64, 69, 73, 73, 61, 6e, 74, 65, 20, 61, 75, 74, 6f, 75, 72, 20, 64, 65, 20, 6d, 6f, 69, 20, 68, 75, 72, 6c, 61, 69, 74, 2e, 0a, 4c, 6f, 6e, 67, 75, 65, 2c, 20, 6d, 69, 6e, 63, 65, 2c, 20, 65, 6e, 20, 67, 72, 61, 6e, 64, 20, 64, 65, 75, 69, 6c, 2c, 20, 64, 6f, 75, 6c, 65, 75, 72, 20, 6d, 61, 6a, 65, 73, 74, 75, 65, 75, 73, 65, 2c, 0a, 55, 6e, 65, 20, 66, 65, 6d, 6d, 65, 20, 70, 61, 73, 73, 61, 2c, 20, 64, 27, 75, 6e, 65, 20, 6d, 61, 69, 6e, 20, 66, 61, 73, 74, 75, 65, 75, 73, 65, 0a, 53, 6f, 75, 6c, 65, 76, 61, 6e, 74, 2c, 20, 62, 61, 6c, 61, 6e, e7, 61, 6e, 74, 20, 6c, 65, 20, 66, 65, 73, 74, 6f, 6e, 20, 65, 74, 20, 6c, 27, 6f, 75, 72, 6c, 65, 74, 20, 3b, 0a, 0a, 41, 67, 69, 6c, 65, 20, 65, 74, 20, 6e, 6f, 62, 6c, 65, 2c, 20, 61, 76, 65, 63, 20, 73, 61, 20, 6a, 61, 6d, 62, 65, 20, 64, 65, 20, 73, 74, 61, 74, 75, 65, 2e, 0a, 4d, 6f, 69, 2c, 20, 6a, 65, 20, 62, 75, 76, 61, 69, 73, 2c, 20, 63, 72, 69, 73, 70, e9, 20, 63, 6f, 6d, 6d, 65, 20, 75, 6e, 20, 65, 78, 74, 72, 61, 76, 61, 67, 61, 6e, 74, 2c, 0a, 44, 61, 6e, 73, 20, 73, 6f, 6e, 20, 6f, 65, 69, 6c, 2c, 20, 63, 69, 65, 6c, 20, 6c, 69, 76, 69, 64, 65, 20, 6f, f9, 20, 67, 65, 72, 6d, 65, 20, 6c, 27, 6f, 75, 72, 61, 67, 61, 6e, 2c, 0a, 4c, 61, 20, 64, 6f, 75, 63, 65, 75, 72, 20, 71, 75, 69, 20, 66, 61, 73, 63, 69, 6e, 65, 20, 65, 74, 20, 6c, 65, 20, 70, 6c, 61, 69, 73, 69, 72, 20, 71, 75, 69, 20, 74, 75, 65, 2e, 0a, 0a, 55, 6e, 20, e9, 63, 6c, 61, 69, 72, 2e, 2e, 2e, 20, 70, 75, 69, 73, 20, 6c, 61, 20, 6e, 75, 69, 74, 20, 21, 20, 2d, 20, 46, 75, 67, 69, 74, 69, 76, 65, 20, 62, 65, 61, 75, 74, e9, 0a, 44, 6f, 6e, 74, 20, 6c, 65, 20, 72, 65, 67, 61, 72, 64, 20, 6d, 27, 61, 20, 66, 61, 69, 74, 20, 73, 6f, 75, 64, 61, 69, 6e, 65, 6d, 65, 6e, 74, 20, 72, 65, 6e, 61, ee, 74, 72, 65, 2c, 0a, 4e, 65, 20, 74, 65, 20, 76, 65, 72, 72, 61, 69, 2d, 6a, 65, 20, 70, 6c, 75, 73, 20, 71, 75, 65, 20, 64, 61, 6e, 73, 20, 6c, 27, e9, 74, 65, 72, 6e, 69, 74, e9, 20, 3f, 0a, 0a, 41, 69, 6c, 6c, 65, 75, 72, 73, 2c, 20, 62, 69, 65, 6e, 20, 6c, 6f, 69, 6e, 20, 64, 27, 69, 63, 69, 20, 21, 20, 74, 72, 6f, 70, 20, 74, 61, 72, 64, 20, 21, 20, 6a, 61, 6d, 61, 69, 73, 20, 70, 65, 75, 74, 2d, ea, 74, 72, 65, 20, 21, 0a, 43, 61, 72, 20, 6a, 27, 69, 67, 6e, 6f, 72, 65, 20, 6f, f9, 20, 74, 75, 20, 66, 75, 69, 73, 2c, 20, 74, 75, 20, 6e, 65, 20, 73, 61, 69, 73, 20, 6f, f9, 20, 6a, 65, 20, 76, 61, 69, 73, 2c, 0a, d4, 20, 74, 6f, 69, 20, 71, 75, 65, 20, 6a, 27, 65, 75, 73, 73, 65, 20, 61, 69, 6d, e9, 65, 2c, 20, f4, 20, 74, 6f, 69, 20, 71, 75, 69, 20, 6c, 65, 20, 73, 61, 76, 61, 69, 73, 20, 21, 0a, 0a, 0a, 43, 68, 61, 72, 6c, 65, 73, 20, 42, 41, 55, 44, 45, 4c, 41, 49, 52, 45, 20, 28, 31, 38, 32, 31, 2d, 31, 38, 36, 37, 29, 0a, 28, 4c, 65, 73, 20, 66, 6c, 65, 75, 72, 73, 20, 64, 75, 20, 6d, 61, 6c, 29, 0a, 20,

et qui marche en conversion, dans les 2 sens, ascii -> hexa et hexa->ascii :-)

Répondre à jee pee

11

Char Snipeur, le 21 jan 2008 à 08:31:53

Non, bien sur il ne fonctionne pas, c'était une ébauche dont tu pouvais t'inspirer. En particulier, je sais pas si tu veux utiliser les entree sorties standard ou des fichiers. En tout cas, une fois fini il fonctionne :

#include <stdio.h>
int main(int argc, char** argv)
{
      unsigned int a,compt=0,n;
      char c,s[1024];
      scanf("%d",&n);
      for(n;n>0;n--)
          {
           scanf("%x",&a);
           c=char(a);
           s[compt++]=c;
           }
      s[compt]='\0';
      printf("%s",s);
      scanf("%d",&n);
      return 0;
}
Mais c'est pareil, il faut séparer chaque caractère hexadecimal soit par une espace, soit par un retour à la ligne.
Salutation ! Quand on sait pas, on touche pas !JBT
Char Snipeur

Répondre à Char Snipeur

12

ludoo78, le 21 jan 2008 à 11:46:55

Merci bien pour tous ça

C'est vrai que ça aurait été interessant de pouvoir convertir directement depuis un fichier hexadecimal.
Que faut-il remplacer pour cela?

Merci

Répondre à ludoo78

13

Char Snipeur, le 21 jan 2008 à 13:03:42

Pour lire à partir d'un fichier hexadecimal en ASCII (c'est à dire lisible "1A F3 ..." par un humain) il suffit soit de faire une indirection lors de l'appel au programme, soit utiliser fscanf() à la place de scanf().
Salutation ! Quand on sait pas, on touche pas !JBT
Char Snipeur

Répondre à Char Snipeur

14

ludoo78, le 21 jan 2008 à 14:12:02

Ok ok merci pour tous les mecs
j'ai réussi à avoirce que je veux grace à vous
++

Répondre à ludoo78

16

 monad, le 24 mai 2009 à 01:02:07

Tu as aussi powershell !

[code]
Function HexIt($a)
{return "{0:X}" -f $a}

Function IntToBaseTwo($value, [string]$bits='') {
$remainder = $value % 2
$bits = [string]$remainder + $bits
$value = ($value - $remainder) / 2
if($value -gt 0) { IntToBaseTwo $value $bits }
else { $bits }
}

Function word2int([System.String]$word)
{$word.GetEnumerator() | foreach {[int][char]$_}}
Function convertword($word)
{
word2int $word
word2int $word | foreach {hexit($_)}
word2int $word | foreach {intTobaseTwo($_)}
}


/code

un mot dont les caracteres sont convertis en entier , entiers en hexa et binaire ^^

Répondre à monad
Collection CommentÇaMarche.net