Perte des premiers zéro en convertissant de l'hexadecimal en octet

cs_chalex Messages postés 34 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 23 juillet 2009 - 16 janv. 2009 à 15:33
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 16 janv. 2009 à 19:11
Bonjour,

j'ai un problème en cours qui m'a amené à un nouveau problème pour lequel je créé un nouveau sujet.
J'ai besoin de faire ce style de conversion : octet -> hexadecimal -> envoie vers autre page -> et retour octet
Mais si je simplifie mon code en une seule page, voila mon problème :

<?php
$binaire = "01000000000000000000000011100000110";
$hexadecimal = base_convert($binaire, 2, 16);
echo "
binaire : $binaire
hexa : $hexadecimal";
$binaire = base_convert($hexadecimal, 16, 2);
echo "
binaire : $binaire ";
?>

voila ce qui est affiché :
binaire : 01000000000000000000000011100000110
hexa : 200000706
binaire : 1000000000000000000000011100000110

Je perds donc les premiers 0 à chaque fois. Est ce que quelqu'un connait une solution du type hex2oct() en php ?

Annie Cordi alement
chalex

4 réponses

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
16 janv. 2009 à 15:41
ça a l'air assez logique qu'il le perde... je te donne 0001 en binaire soit 1 en hexa et 1 en binaire donc.
La conversion n'a aucune mémoire du maximum... tu dois soit lui envoyer l'info soit le savoir à l'arrivée.

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
cs_chalex Messages postés 34 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 23 juillet 2009 1
16 janv. 2009 à 16:39
teclis > ça a l'air assez logique qu'il le perde...

Ben si c'est si logique pour toi, tu devrais savoir comment les ajouter facilement alors !!

Pour ma part, j'ai utilisé une solution temporaire en calculant la différence des longueurs de chaine
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
16 janv. 2009 à 17:19
bah si tu envoies 0001 il faut que tu envoies aussi sur combien de bit tu es donc 4.
Avec ces 2 valeurs tu sauras la valeur reçue sur combien de bit elle est.après c'est du traitement de string (ou peut etre juste un param!)

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
16 janv. 2009 à 19:11
Salut,

Pourquoi envoyer aussi le nombre de bits puisque c'est  forcement 4 bits ?

 01000000000000000000000011100000110
= > envoi de 200000706 par php
=> reception JS :
on compte le nb de digits de la chaîne reçue (nb_hex), on convertit en binaire(nb_bin = longueur chaîne)Si (nb_hex * 4) !nb_bin on complète à gauche avec des 0 jusqu'à nb_hex * 4 nb_bin

Cordialement,

Kohntark -
0