2

次のようなビット列をどのように変換しますか

0100100001100101011011000110110001101111001000000101011101101111011100100110110001100100

「Hello World」のようなASCII文字の文字列に?

4

4 に答える 4

3

それらを 8 文字の文字列 (バイト) に分割し、 を呼び出しConvert.ToByte(str, 2)、 に入れ、byte[]を呼び出す必要がありますEncoding.ASCII.GetString()

于 2012-06-03T12:36:18.470 に答える
1

このコード例は明確です。

String bits = "01001001000......0001100100"; // shortened here for demo purposes

byte[] bArr = new byte[bits.Length / 8];
for (int i = 0; i < bits.Length / 8; i++)
{
    String part = bits.Substring(i * 8, 8);
    bArr[i] += Convert.ToByte(part, 2);
}
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
Console.WriteLine(encoding.GetString(bArr));

基本的に、文字列を偶数部分に分割し、結果のバイトをバイト配列に格納してから、特定のエンコーディングで解析します。

于 2012-06-03T12:47:30.363 に答える
0
public string GetBytesFromBinaryString(String binary)
{
    var list = new List<Byte>();

    for (int i = 0; i < binary.Length; i += 8)
    {
        String t = binary.Substring(i, 8);

        list.Add(Convert.ToByte(t, 2));
    }

    return Encoding.ASCII.GetString(list.ToArray());
}

テスト:

var data = GetBytesFromBinaryString("0100100001100101011011000110110001101111001000000101011101101111011100100110110001100100");

出力:

"こんにちは世界"

于 2012-06-03T13:07:18.973 に答える
0

この方法を使用する

private byte[] GetAsByteArray(string BinaryString)
{
        return Enumerable.Range(0, BinaryString.Length / 8)
            .Select(i => Convert.ToByte(BinaryString.Substring(i * 8, 8), 2)).ToArray();
}

次に、次のように呼び出します

string binaryString = "0100100001100101011011000110110001101111001000000101011101101111011100100110110001100100";
string convertedText = System.Text.Encoding.ASCII.GetString(GetAsByteArray(binaryString));
于 2012-06-03T13:07:21.570 に答える