2009-08-28 16 views

答えて

2

を読んで、あなたのエンコーディングを含む完全なラウンドトリップのためのサンプルであると仮定すると、文字列

としてストリームを読み取ることができます。

// Input 
String input = "Test1234"; 

// Encoding 
String outputA = String.Empty; 
foreach (Byte b in Encoding.ASCII.GetBytes(input)) 
{ 
    outputA += b.ToString("X2"); 
} 

// Decoding 
Byte[] bytes = new Byte[outputA.Length/2]; 
for (Int32 i = 0; i < outputA.Length/2; i++) 
{ 
    bytes[i] = Convert.ToByte(outputA.Substring(2 * i, 2), 16); 
} 
String outputB = Encoding.ASCII.GetString(bytes); 

// Output 
Console.WriteLine(input); 
Console.WriteLine(outputA); 
Console.WriteLine(outputB); 

これは正しい方向にポイントする一例である - 入力が無効な文字が含まれているか、奇数の長さを持っている場合、明らかに一つStringBuilder Sを使用し、生産コードでいくつかのエラー処理を実行しなければなりません。

1

は(私は小さな文字列でテストしてみた)この場合はエレガントな解決策かどうかを知っているが、動作しているようだしないでください:

var sb = new StringBuilder("GET THE HEX LINE SOME WAY"); 
var strs = new string[sb.Length/2]; 

var i = 0; 
var j = 0; 
while(i<sb.Length) 
{ 
    strs[j] = sb.ToString(i, 2); 
    i += 2; 
    j++; 
} 

foreach (var s in strs) 
{ 
    Console.WriteLine("Hex: {0}, Orig ASCII: {1}", 
         s, Int32.Parse(s,NumberStyles.HexNumber)); 
} 

PS: - 最初の行に進行と列ビルダを初期化しますあなたが書いているファイルや他のソースから。

0

使用のファイルストリーム上のio.streamreader、MemoryStreamを、IOストリームその後、あなたがここでバイトストリーム

関連する問題