Warum unterscheidet sich hex -> base64 so von base64 -> hex beim Packen und Entpacken?
Ich habe diesen Code zum Laufen gebracht, der von hex zu base64 konvertiert und umgekehrt. ich habeto_base64
von einer anderen SO-Frage, und ich schriebto_hex
mit einigem Rätselraten und Ausprobieren.
class String
def to_base64
[[self].pack("H*")].pack("m0")
end
def to_hex
self.unpack("m0").first.unpack("H*").first
end
end
Aber ich habe das nicht wirklich befürchtetpack
undunpack
Methoden, auch nach dem Lesen der Dokumente. Insbesondere bin ich durch die Asymmetrie zwischen den beiden Implementierungen verwirrt. Konzeptionell nehmen wir in beiden Fällen einen String, der in einer Basis (16 oder 64) codiert ist, und möchten ihn in eine andere Basis konvertieren. Warum können wir das nicht umsetzen?to_hex
so was:
def to_hex
[[self].pack("m0")].pack("H*")
end
oderto_base64
mitunpack
? Warum ändert die Basis, die wir ausgewählt haben, die Methode, die wir zum Ausführen von Konvertierungen benötigen, vollständig?