[PHP] Transformer une chaine contenant de l'hexa en hexa...

Transformer une chaine contenant de l'hexa en hexa... [PHP] - PHP - Programmation

Marsh Posté le 16-07-2003 à 22:10:17    

Bonjour !
 
j'ai une question assez étrange a vous poser.
 
Imaginons que vous ayiez une chaine du type :

Code :
  1. '3FE1349C1707ACF351F871153BEE4F0D15169EF5C642AB5187036A92E8F6C5DA8710CBAD464F933E4A2F1E19DF2FD5304CEB5A4CED104E952DF555C6DC1EBDF46802C258681D58F89E63AB57109E257042744C4742A7D96FB98FBA581697F931C0FF418976A9EE43BC3798C55310BD7F8C5F5E5DFC545668B6585375EF5F1909'


C'est joli c'est magnifique je suis d'acord ^^
 
Vous reperez tous que c'est de l'hexadécimal.
 
Comment faire  pour avoir une variable dont la valeur est la valeur hexadécimale de la chaine ?
 
Comment charger la valeur dans la chaine vers une variable quoi.
 
par exemple si j'ai une chaine dont la valeur est 'ff', comment avoir une variable dont la valeur en mémoire est FF ?
 
Merci d'avance...


Message édité par Tetedeiench le 16-07-2003 à 22:12:47
Reply

Marsh Posté le 16-07-2003 à 22:10:17   

Reply

Marsh Posté le 16-07-2003 à 22:18:53    

tetedeiench a écrit :

Bonjour !
 
j'ai une question assez étrange a vous poser.
 
Imaginons que vous ayiez une chaine du type :

Code :
  1. '3FE1349C1707ACF351F871153BEE4F0D15169EF5C642AB5187036A92E8F6C5DA8710CBAD464F933E4A2F1E19DF2FD5304CEB5A4CED104E952DF555C6DC1EBDF46802C258681D58F89E63AB57109E257042744C4742A7D96FB98FBA581697F931C0FF418976A9EE43BC3798C55310BD7F8C5F5E5DFC545668B6585375EF5F1909'


C'est joli c'est magnifique je suis d'acord ^^
 
Vous reperez tous que c'est de l'hexadécimal.
 
Comment faire  pour avoir une variable dont la valeur est la valeur hexadécimale de la chaine ?
 
Comment charger la valeur dans la chaine vers une variable quoi.
 
par exemple si j'ai une chaine dont la valeur est 'ff', comment avoir une variable dont la valeur en mémoire est FF ?
 
Merci d'avance...


La fonction base_convert() ne te permet pas de faire ça ?


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 16-07-2003 à 22:18:57    

Si jamais tu effaces ton topic une fois qu'il est résolu, comme tu as pris l'habitude de le faire, ce sera le dernier que tu posteras ici


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 16-07-2003 à 22:19:50    

Harkonnen a écrit :

Si jamais tu effaces ton topic une fois qu'il est résolu, comme tu as pris l'habitude de le faire, ce sera le dernier que tu posteras ici  

:o


---------------
༼ つ ◕_◕ ༽つ
Reply

Marsh Posté le 16-07-2003 à 22:23:14    

Heu... Tu veux vraiment manipuler des nombres hexa de cette taille???
 
Tu veux faire quoi exactement?
 
Pour des chaînes courtes, tu peux peut-être essayer un bricolou du genre:

Code :
  1. $str = 'F8CD';
  2. eval ('$nbr=0x'.$str.';');

Reply

Marsh Posté le 16-07-2003 à 22:31:08    

Harkonnen a écrit :

Si jamais tu effaces ton topic une fois qu'il est résolu, comme tu as pris l'habitude de le faire, ce sera le dernier que tu posteras ici  


 
Fallait pas le prévenir

Reply

Marsh Posté le 16-07-2003 à 22:31:26    

Toucouch a écrit :

Heu... Tu veux vraiment manipuler des nombres hexa de cette taille???
 
Tu veux faire quoi exactement?
 
Pour des chaînes courtes, tu peux peut-être essayer un bricolou du genre:

Code :
  1. $str = 'F8CD';
  2. eval ('$nbr=0x'.$str.';');




 
Oui j'en ai besoin ;)
 
J'essaie ton truc bien que je voie pas trop trop ce que ca fasse ;)

Reply

Marsh Posté le 16-07-2003 à 22:34:00    

OK tu le convertit en int apparamment. la valeur maximale que j'obtiens est 2147483647 .
 
Ca me conviens pas, vu la taille de la chaine que je doit avoir.
 
base_convert() converit les nombres de base x vers base x. mois je dois convertir une chaine représentant communément de l'hexadecimal vers une zoine mémoire :D


Message édité par Tetedeiench le 16-07-2003 à 22:36:09
Reply

Marsh Posté le 16-07-2003 à 22:39:51    

http://www.php.net/manual/en/function.hexdec.php
 
Mais tu va avoir un problème avec ton nombre gigantesque !
 
En fait c'est une chaîne que tu veux, non ?
 
En fait en php, tu peux écrire çà :
 

Code :
  1. $a = "\x50\x48\x50";


 
Et $a contient la chaîne "PHP".
 
Donc t'as juste à ajouter '\x'devant chaque nombre hexa.
 
Mais le coup du \x, c'est pour les valeurs littérales dans le code, donc si ta chaîne hexa est dans une variable, il faut passer par eval...
 
Ce qui donne :
 

<?php
 
$key = "3FE1349C1707ACF351F871153BEE4F0D15169EF5C642AB5187036A92E8F6C5DA8710CBAD464F933E4A2F1E19DF2FD5304CEB5A4CED104E952DF555C6DC1EBDF46802C258681D58F89E63AB57109E257042744C4742A7D96FB98FBA581697F931C0FF418976A9EE43BC3798C55310BD7F8C5F5E5DFC545668B6585375EF5F1909";
 
$hexKey = "";
 
for( $i = 0; $i < strlen( $key ); $i += 2 )
{
 eval( "\$num = \"\x" . substr( $key, $i, 2 ) . "\";" );
 $hexKey .= $num;
}
 
echo $hexKey;
 
?>


 
A+ :sol:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 16-07-2003 à 22:45:29    

Mara's dad, merci encore pour ton aide qui a été décidement tres rpécieuse aujourd'hui.
 
mais en allant voir sur google, j'ai trouvé ce bout de code qui marche parfaitement :

Code :
  1. function hex2bin($hexdata) {
  2.  
  3.   for ($i=0;$i<strlen($hexdata);$i+=2) {
  4.      $bindata.=chr(hexdec(substr($hexdata,$i,2)));
  5.   }
  6.  
  7.   return $bindata;
  8. }


 
je sais pas  ce  que ca fait, mais ca marche. Alors  moi y en a etre content :)
 
Merci !
 
PS : j'ai résolu mon prob de tout a l'heure ;) Bon je vais devoir payer mais spagrave :D

Reply

Marsh Posté le 16-07-2003 à 22:45:29   

Reply

Marsh Posté le 16-07-2003 à 22:47:38    

tetedeiench a écrit :

Mara's dad, merci encore pour ton aide qui a été décidement tres rpécieuse aujourd'hui.
 
mais en allant voir sur google, j'ai trouvé ce bout de code qui marche parfaitement :

Code :
  1. function hex2bin($hexdata) {
  2.  
  3.   for ($i=0;$i<strlen($hexdata);$i+=2) {
  4.      $bindata.=chr(hexdec(substr($hexdata,$i,2)));
  5.   }
  6.  
  7.   return $bindata;
  8. }


C'était ma première idée, mais j'ai trouvé le coup du eval() plus joli !
 
je sais pas  ce  que ca fait, mais ca marche. Alors  moi y en a etre content :)
 
Merci !
 
PS : j'ai résolu mon prob de tout a l'heure ;) Bon je vais devoir payer mais spagrave :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 16-07-2003 à 22:48:37    

Le eval est plus efficace que le coup que j'ai trouvé ou pas ?
 
Je te dis si ton code marche de  suite :D

Reply

Marsh Posté le 16-07-2003 à 22:49:46    

Ouiche les deux marchent nickel :D

Reply

Marsh Posté le 16-07-2003 à 22:50:36    

tetedeiench a écrit :

Ouiche les deux marchent nickel :D


Ca je le sait !
http://www.surleau.org/demo/ascii.php


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 16-07-2003 à 22:51:23    


 
Chapo en tout cas vu la rapidité de la réponse.

Reply

Marsh Posté le 16-07-2003 à 23:09:15    

tetedeiench a écrit :


 
Chapo en tout cas vu la rapidité de la réponse.


 
fait gaffe maintenant, n'effaces pas ce topic  [:boidleau]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 16-07-2003 à 23:47:33    

tetedeiench a écrit :

Mara's dad, merci encore pour ton aide qui a été décidement tres rpécieuse aujourd'hui.
 
mais en allant voir sur google, j'ai trouvé ce bout de code qui marche parfaitement :

Code :
  1. function hex2bin($hexdata) {
  2.  
  3.   for ($i=0;$i<strlen($hexdata);$i+=2) {
  4.      $bindata.=chr(hexdec(substr($hexdata,$i,2)));
  5.   }
  6.  
  7.   return $bindata;
  8. }


 
je sais pas  ce  que ca fait, mais ca marche. Alors  moi y en a etre content :)
 
Merci !
 
PS : j'ai résolu mon prob de tout a l'heure ;) Bon je vais devoir payer mais spagrave :D


Ok! Je crois avoir compris ce que tu cherchais exactement... En gros tu veux faire une sorte d'éditeur héxadécimal pour éditer des binaires... C'est le concept de nombre streumique qui m'interpellait... En fait, tu ne veux pas faire d'opérations sur ton nombre...

Reply

Marsh Posté le 17-07-2003 à 00:09:51    

Nan :sol:, sa chaîne hexa, c'est une clef publique RSA...
http://forum.hardware.fr/forum2.ph [...] 477&cat=10


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 17-07-2003 à 00:13:06    

Mara's dad a écrit :

Nan :sol:, sa chaîne hexa, c'est une clef publique RSA...
http://forum.hardware.fr/forum2.ph [...] 477&cat=10


Ah, ok... Et cette clef doit être stockée sous forme de fichier?

Reply

Marsh Posté le 17-07-2003 à 00:14:02    

Toucouch a écrit :


Ah, ok... Et cette clef doit être stockée sous forme de fichier?


Sercret d'état :(


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 17-07-2003 à 00:19:20    

Mara's dad a écrit :


Sercret d'état :(  


Ben nan, si c'est une clef publique... :sarcastic:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed