2016-05-27 14 views
0

Andere Möglichkeit zum Codieren byte[] zu String und Decodieren String zu byte[] ohne Base64 zu verwenden.Encoder und Decoder

Weil, wenn ich eine byte[] zu String codiere und dann komprimiere ich die String mit LZW. Ich kann es mit Base64 nicht zu byte[] decodieren. Gibt es einen Encoder oder Decoder, der eine String Decodierung behalten kann, obwohl die String von LZW modifiziert wurde?

+0

Warum würden Sie Byte-Array in Zeichenfolge vor der Komprimierung konvertieren? Es ist sehr verwirrend, was Sie erreichen wollen ... Vor allem ohne Sprach-Tag und [MCVE]. –

+0

Weil mein LZW-Algorithmus eine Zeichenfolge für die Eingabe benötigt: lzw.compress (myString); –

+0

Nicht hilfreich ... Wenn Sie mit einem Algorithmus aufwarten, wie erwarten Sie, dass die Leute die Frage beantworten, wenn in der Post keine Informationen über Ihre Arbeit enthalten sind? Bitte beachte, dass du deinen Beitrag mit dem Sprach-Tag, [MCVE] und Details zu "deinem LZW-Algorithmus" redest, damit jemand antworten kann. (Hinweis: Ich vermute, dass die von Ihnen verwendete Sprache Zeichen als 16-Bit-Zeichen betrachtet, während normales LZW über 1-Byte-Zeichen spricht, was eines der Probleme in diesem mysteriösen Code sein könnte). –

Antwort

0

Nicht praktisch, aber einfach zu implementieren und leicht reversible Codierung von Bytes in Unicode-Zeichen ist, jedes Byte in (offset + byte_value) so zu kodieren, dass alle 256 Werte in einen gültigen Unicode-Block passen.

I.e. bei Unicode blocks Bereich 2200..22FF (Mathematical Operators) suchen, ist durchaus sinnvoll für einen solchen Betrieb (C# Probe):

char EncodeByte(byte x) { return (char)(0x2200 + x);} 
byte DecodeByte(char x) { return (byte)(x - 0x2200);} 

Hinweis: regelmäßige LZW Byte-Sequenzen manipuliert - so dass keine Codierung erforderlich, wenn von Bytes zu starten.