2016-05-27 13 views
0

byte[]Stringを符号化するその他の方法と、Stringbyte[]をデコードする方法は、Base64を使用せずに行います。エンコーダとデコーダ

byte[]をStringにエンコードしてから、LZWを使用してStringを圧縮するので、 Base64を使ってbyte[]にデコードすることはできません。 StringがLZWで変更されていますが、デコードを保持できるエンコーダまたはデコーダはStringですか?

+0

圧縮前にバイト配列を文字列に変換するのはなぜですか?これはあなたが達成しようとしていることを非常に混乱させています...特に言語タグと[MCVE]なし。 –

+0

私のLZWアルゴリズムは入力のために文字列を必要とするので:lzw.compress(myString); –

+0

困っています...あなたのアルゴリズムに関する情報があれば、あなたの仕事に関する情報が投稿に与えられていない場合、どのように人々が質問に答えると思いますか?言語タグ、[MCVE]と "LZWアルゴリズム"の詳細を投稿して、誰かが解答できるように編集してください。 (注:あなたが使用している言語では文字は16ビットとみなされ、通常のLZWでは1バイト文字が話されますが、これは不思議なコードの問題の1つかもしれません)。 –

答えて

0

実用的ではありませんが実装が簡単で、Unicode文字へのバイトの簡単な可逆エンコーディングは、すべての256の値が有効なUnicodeブロックに収まるように各バイトを(offset + byte_value)にエンコードすることです。

I.e.

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

注:Unicode blocks範囲2200..22FF(数学演算子)は、このような動作(C#サンプル)のために非常に合理的である見て正規LZWするバイトの配列を操作していない - 必要なので、全く符号化バイトから始まります。

関連する問題