Convertir les caractères ascii hex
Est-il possible de représenter une séquence de caractères hexadécimaux (0-9A-F) avec une séquence de 0-9a-zA-Z personnages, donc, le résultat de la séquence est plus petit et peut être décodé?
Par exemple:
$hex = '5d41402abc4b2a76b9719d911017c592';
echo $string = encode($hex); //someASCIIletters123
echo decode(string) == $hex; //true
Que voulez-vous dire?
Je pense qu'il veut dire bachotage 2 (4 octets) chiffres hexadécimaux dans un octet (ce qui devrait être possible tous les à droite)
On dirait que vous simplement réinventé base64... eh Bien, base62, mais j'irais avec le bien connu et pris en charge partout en base64, si j'étais vous.
Je pense que zie signifie tourner à la base de 16 à la base de 62. La plus la base, plus la corde est courte, de sorte que le "résultat de la séquence" serait en effet plus "petit". La 62 chiffres sont 0-9a-zA-Z. Soigné notion, mais je ne connais pas de moyen simple de le faire.
Je pense qu'il veut dire bachotage 2 (4 octets) chiffres hexadécimaux dans un octet (ce qui devrait être possible tous les à droite)
On dirait que vous simplement réinventé base64... eh Bien, base62, mais j'irais avec le bien connu et pris en charge partout en base64, si j'étais vous.
Je pense que zie signifie tourner à la base de 16 à la base de 62. La plus la base, plus la corde est courte, de sorte que le "résultat de la séquence" serait en effet plus "petit". La 62 chiffres sont 0-9a-zA-Z. Soigné notion, mais je ne connais pas de moyen simple de le faire.
OriginalL'auteur Dziamid | 2011-09-20
Vous devez vous connecter pour publier un commentaire.
Vous pouvez trivialement adapter la solution que j'ai présenté ici à l'aide de la fonction
base_convert_arbitrary
.Edit: je n'avais pas lu assez attentivement 🙂 de la Base de 16 à base 62 est encore très faisable, comme ci-dessus.
Le voir en action.
OriginalL'auteur Jon
Je pense que vous êtes à la recherche pour cette:
(À partir de http://www.linux-support.com/cms/php-convert-hex-strings-to-ascii-strings/)
(Les œuvres de ce genre javascript outil: http://www.dolcevie.com/js/converter.html)
OriginalL'auteur Andrew
Vous dire voulez convertir une chaîne de chiffres hexadécimaux en valeurs hexadécimales?
OriginalL'auteur Marc B
Bien, quelque chose de similaire, oui... analyser les caractères hex comme une valeur binaire, puis de les convertir en base64. Qui utilise un peu peu plus de 0-9 a-z A-Z, mais seulement un peu plus de caractères. Êtes-vous d'accord pour utiliser les trois autres personnages en plus de ceux 62? Vous pouvez utiliser
base64_encode
pour effectuer l'encodage si.(Vous pouvez convertir de base32 à la place, mais qui ne serait pas aussi compact. Conversion de bases qui ne sont pas des puissances de 2 est également possible, mais moins attrayant.)
Vous auriez également besoin d'un moyen de représenter une dernière demi-octet si votre séquence d'entrée a un nombre impair de caractères. Vous aurez probablement envie de penser à cela avant d'appeler
pack
à faire de l'original d'analyse...Le 65e caractère est le signe d'égalité, ce qui peut apparaître qu'à la fin de la chaîne codée. Google la méthode de codage de voir pourquoi vous en avez besoin.
ahhh, vous faites référence au caractère de remplissage qui est obligatoire dans un certain nombre de b64 variantes. Il pourrait tout aussi bien choisir par exemple RFC4648, Nmtoken ou le Nom et l'enregistrer 1 octet
Oui, potentiellement. L'avantage d'utiliser un "standard" base64 est qu'il est plus facilement portable vers d'autres plates-formes. Généralement la différence entre le besoin de trouver de 64 caractères et le besoin de trouver de 65 ans n'est pas significative.
Cependant,
base64_encode
est intégré dans PHP et beaucoup d'autres langues, que joli beaucoup dicte ce que l'un de nous choisir.OriginalL'auteur Jon Skeet