foreach (byte binaryOutupt in Encoding.ASCII.GetBytes(fileLine))
{
fileOutput.Write(binaryOutupt.ToString("x2"));
}
文字列バイトを16進数に変換するコードがありますが、これをどのように逆転できますか?文字列を2進数に変換する方法
foreach (byte binaryOutupt in Encoding.ASCII.GetBytes(fileLine))
{
fileOutput.Write(binaryOutupt.ToString("x2"));
}
文字列バイトを16進数に変換するコードがありますが、これをどのように逆転できますか?文字列を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を使用し、生産コードでいくつかのエラー処理を実行しなければなりません。
は(私は小さな文字列でテストしてみた)この場合はエレガントな解決策かどうかを知っているが、動作しているようだしないでください:
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: - 最初の行に進行と列ビルダを初期化しますあなたが書いているファイルや他のソースから。
使用のファイルストリーム上のio.streamreader、MemoryStreamを、IOストリームその後、あなたがここでバイトストリーム