Wenn Sie Binärdaten haben, die Sie kodieren müssen, welches Kodierungsschema verwenden Sie?Welches Kodierungsschema verwenden Sie, wenn Sie Binärdaten haben, die Sie über einen ASCII-Kanal senden müssen?
Ich kenne:
- Hex encoding. Sehr einfach, aber ziemlich ausführlich, erweitert ein Byte auf zwei.
- Base 64. Am häufigsten, nicht so ausführlich, werden drei Bytes zu vier erweitert.
- Base 85. Nicht üblich, weniger wieder ausführlich, erweitert vier Bytes auf fünf.
Gibt es noch andere Kodierungsschemata, die allgemein verwendet werden? Wenn ja, worin bestehen Vor- und Nachteile?
Bearbeiten: Dies ist zum Beispiel nützlich, wenn Sie versuchen, beliebige Daten in einem Cookie zu speichern. Cookies können nur Text speichern, keine willkürlichen Daten, daher müssen Sie sie in irgendeiner Weise konvertieren, vorzugsweise mit einer Möglichkeit, sie zurück zu konvertieren. Nehmen Sie weiterhin an, dass Sie einen zustandslosen Server verwenden, sodass Sie den Status nicht auf dem Server speichern und nur einen Bezeichner in den Cookie einfügen können. Wenn Sie dies tun, müssen Sie natürlich auch sicherstellen, dass das, was der Benutzer an Sie zurückgibt, das ist, was Sie an den Benutzer weitergegeben haben, zum Beispiel eine Signatur.
Auch da der aktuelle Konsens ist, dass Sie Base64 verwenden sollten, da es weit verbreitet ist, werde ich auch darauf hinweisen, dass diese ist, was ich benutze ... Ich bin nur neugierig, ob jemand noch etwas verwendet, und wenn ja , Warum.
bearbeiten: Nur falls jemand über diese stolpert, wenn Sie Base64 verwenden wollen ein Cookie zum Speichern von Daten in, müssen Sie a modified Base64 implementation verwenden. Siehe this answer aus dem Grund.
An erster Stelle, warum müssen Sie es kodieren? Sind Sie an einen ASCII-Kanal gebunden? –
Base64 gewinnt, weil es so üblich ist, dass ich mir keine Sorgen machen muss, meinen eigenen Encoder/Decoder zu rollen. Ich habe keine Anwendungen kennengelernt, bei denen ich mir Sorgen darüber gemacht habe, Bandbreite oder Dateibereich in verschlüsselten Binärdaten zu speichern. – jball
@Paul, ich werde gehen wie @jball vorgeschlagen und Base64 auswählen; Da Sie jedoch Daten an den Client senden und erwarten, dass _same_ Daten zurückkommen, sollten Sie sich bewusst sein, dass auf der Clientseite manipuliert werden kann. –