A voir également:
- $Hex
- Éditeur hexadécimal - Télécharger - Édition & Programmation
- Easy php - Télécharger - Divers Web & Internet
- Transformer majuscule en minuscule word - Guide
- 1 octet en bit ✓ - Forum Logiciels
- Transformer image en icone - Guide
2 réponses
HostOfSeraphim
Messages postés
6750
Date d'inscription
jeudi 2 février 2006
Statut
Contributeur
Dernière intervention
31 juillet 2016
1 608
16 janv. 2009 à 00:26
16 janv. 2009 à 00:26
En même temps, 2 en binaire c'est 10, pas 0010.
Tu veux obligatoirement deux zéros devant ?
Tu veux obligatoirement deux zéros devant ?
oui, il me le faut en octet en fait, j'avais oublié de préciser, pour garder une structure correcte
merci de ta réponse rapide :)
merci de ta réponse rapide :)
Merci blaster c'est une solution qui fonctionne parfaitement pour mon exemple.
Par contre, mon vrai script comporte 8000 bits
Je le transforme en hexa, et j'envoie le résultat à une autre page
Cette autre page prend l'hexa et le recode en bit et c'est à ce moment la que je perds mes zéro, voici un test sur mon code (j'ai pas mis les 8000 caractères et vous comprendrez bien pourquoi)
voila ce qui est affiché :
binaire : 01000000000000000000000011100000110
hexa : 200000706
binaire : 1000000000000000000000011100000110
je perd donc le premier 0 et ça m'embete grave
Vous voyez ce que je veux dire ? (You know what I mean ?)
Par contre, mon vrai script comporte 8000 bits
Je le transforme en hexa, et j'envoie le résultat à une autre page
Cette autre page prend l'hexa et le recode en bit et c'est à ce moment la que je perds mes zéro, voici un test sur mon code (j'ai pas mis les 8000 caractères et vous comprendrez bien pourquoi)
<?php $binaire = "01000000000000000000000011100000110"; // par exemple (j'ai pas mis les 8000 caractères) $hexadecimal = base_convert($binaire, 2, 16); echo "<br> binaire : $binaire <br> hexa : $hexadecimal"; $binaire = base_convert($hexadecimal, 16, 2); echo "<br> binaire : $binaire "; ?>
voila ce qui est affiché :
binaire : 01000000000000000000000011100000110
hexa : 200000706
binaire : 1000000000000000000000011100000110
je perd donc le premier 0 et ça m'embete grave
Vous voyez ce que je veux dire ? (You know what I mean ?)
Quand tu sauras ce que tu veux faire je pense que tu auras bien progressé !
j'ai envie de te dire pourquoi ne reste tu pas en binaire ? si c'est pour gagner des "octets" c'est un débat dépassé et il faut rester en binaire, car les conversions binaire => hexa => binaire sont très pénalisantes en temps CPU
Remarque que ton binaire n'a que le nom de la variable $bin comme AOC ! si je mets $dec à la place ce sera du décimal ! on est bien d'accord. PHP manque de discernement dans les types de variable et ça ne simplifie pas la tâche.
Ceci étant dit :
nous appellerons OCTET une zone mémoire de 8 bits consécutifs,chaque bit valant 0 ou 1 (base binaire ou 2)
cet octet peut se représenter en 2 groupes de 4 bits consécutifs, chaque groupe ayant donc 16 symboles possibles d'où appellation hexadécimale (base 16) symboles 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
exemple 00000001 <=> 01, 00010001 <=> 11, 00110012=AB, jusqu'au maximum 11111111<=>FF
Donc si tu veux "passer" des "octets" il faut que strlen($bin)=q*8 et ta chaine sera du genre $hex = bin2hex(chr(00000010)).bin2hex(chr(00000000)).bin2hex(chr(00000000)).bin2hex(chr(00000111)).bin2hex(chr(00000110)) après avoir ajouté le nombre adéquat de 0 en début.
Remarquer que le contenu de $hex=0800004948 n'est pas la conversion de $bin mais la traduction hexa de chaque octet l'un après l'autre.
Noter aussi que je doute que l'instruction convert, que tu utilises, n'explose pas appliquée à 8500 bits, ou rende une bonne valeur, après décodage par le module récepteur !
J'ai l'intention de fouiller un peu plus le sujet ...
j'ai envie de te dire pourquoi ne reste tu pas en binaire ? si c'est pour gagner des "octets" c'est un débat dépassé et il faut rester en binaire, car les conversions binaire => hexa => binaire sont très pénalisantes en temps CPU
Remarque que ton binaire n'a que le nom de la variable $bin comme AOC ! si je mets $dec à la place ce sera du décimal ! on est bien d'accord. PHP manque de discernement dans les types de variable et ça ne simplifie pas la tâche.
Ceci étant dit :
nous appellerons OCTET une zone mémoire de 8 bits consécutifs,chaque bit valant 0 ou 1 (base binaire ou 2)
cet octet peut se représenter en 2 groupes de 4 bits consécutifs, chaque groupe ayant donc 16 symboles possibles d'où appellation hexadécimale (base 16) symboles 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
exemple 00000001 <=> 01, 00010001 <=> 11, 00110012=AB, jusqu'au maximum 11111111<=>FF
Donc si tu veux "passer" des "octets" il faut que strlen($bin)=q*8 et ta chaine sera du genre $hex = bin2hex(chr(00000010)).bin2hex(chr(00000000)).bin2hex(chr(00000000)).bin2hex(chr(00000111)).bin2hex(chr(00000110)) après avoir ajouté le nombre adéquat de 0 en début.
Remarquer que le contenu de $hex=0800004948 n'est pas la conversion de $bin mais la traduction hexa de chaque octet l'un après l'autre.
Noter aussi que je doute que l'instruction convert, que tu utilises, n'explose pas appliquée à 8500 bits, ou rende une bonne valeur, après décodage par le module récepteur !
J'ai l'intention de fouiller un peu plus le sujet ...
Ben en fait je voulais passer en hexadécimal car j'envoyais 8000 bits dans l'url et ça passait pas (au dessus de 2000 bits mon url était tronquée) donc voilà l'intéret de ma question.
J'avais trouvé une réponse en ajoutant à l'url une variable pour connaitre le nombre de caractère de ma variable $binaire de départ, et je la compare à celle d'arrivée et j'ajoute le nombre de 0 de différence.
" Remarque que ton binaire n'a que le nom de la variable $bin comme AOC ! si je mets $dec à la place ce sera du décimal ! on est bien d'accord."
Dans la programmation oui, mais tu comprend bien que c'est un nombre binaire...
J'avais trouvé une réponse en ajoutant à l'url une variable pour connaitre le nombre de caractère de ma variable $binaire de départ, et je la compare à celle d'arrivée et j'ajoute le nombre de 0 de différence.
" Remarque que ton binaire n'a que le nom de la variable $bin comme AOC ! si je mets $dec à la place ce sera du décimal ! on est bien d'accord."
Dans la programmation oui, mais tu comprend bien que c'est un nombre binaire...