Konvertieren von hex in ascii-Zeichen
Ist es möglich, repräsentieren eine Folge von hex-Zeichen (0-9A-F) mit einer Folge von 0-9a-zA-Z-Zeichen, so das der Ergebnis-Sequenz ist kleiner und decodiert werden kann?
Beispiel:
$hex = '5d41402abc4b2a76b9719d911017c592';
echo $string = encode($hex); //someASCIIletters123
echo decode(string) == $hex; //true
- Was meinst du?
- Ich denke, er meint, pauken, 2-(4-byte) hex-Ziffern in einem byte (was möglich sein müsste, all right)
- Sieht aus wie Sie nur neu erfunden base64... Naja, base62, aber ich würde gehen mit den bekannten und überall unterstützt base64, wenn ich du wäre.
- Ich denke, zie bedeutet wiederum Basis 16 zur Basis 62. Je höher die Basis, desto kürzer die saite, so dass die "Ergebnis-Folge" wäre in der Tat "kleiner". Der 62-stellige Zeichen 0-9a-zA-Z. Nette Vorstellung, aber ich kenne keine einfache Möglichkeit, es zu tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie trivial passen Sie die Lösung, die ich mir vorgestellt hier mit der Funktion
base_convert_arbitrary
.Edit: hatte ich nicht sorgfältig Lesen genug 🙂 Base 16 base 62 ist immer noch sehr machbar, wie oben beschrieben.
Sehen Sie es in Aktion.
Ich denke, du suchst das:
(Aus http://www.linux-support.com/cms/php-convert-hex-strings-to-ascii-strings/)
(Werke wie dieses javascript-tool: http://www.dolcevie.com/js/converter.html)
Meinen Sie konvertieren möchten einen string von hex-Ziffern in der tatsächlichen hex-Werte?
Gut, etwas ähnliche, ja... das Parsen der hex-Zeichen als binären Wert, dann umwandeln in base64. Das wird ein wenig bisschen mehr als 0-9 a-z a-Z, aber nur ein paar Zeichen mehr. Sind Sie in Ordnung, um drei andere Charaktere zusätzlich zu denen, die 62? Sie können
base64_encode
zum durchführen der Codierung, wenn so.(Sie können konvertieren base32 statt, aber das wäre nicht so kompakt. Umstellung auf Basen, die nicht eine Potenz von 2 ist, ist auch machbar, aber weniger attraktiv.)
Würden Sie auch benötigen einige Möglichkeit der Darstellung einer abschließenden halb-byte, wenn sich Ihre input-Sequenz hatte eine ungerade Anzahl von Zeichen. Sie werden wahrscheinlich wollen, zu denken, dass vor dem Aufruf
pack
zu tun, die original-Analyse...base64_encode
ist gebaut in PHP und viele andere Sprachen, die ziemlich viel diktiert, was jede von uns Holen würde.