2

1 と 0 のみを格納している文字列があります。今度はそれをバイト配列に変換する必要があります。私は試した ..

System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
                        byte[] d = encoding.GetBytes(str5[1]);

しかし、48や49のようなASCIIのバイト配列が得られますが、バイト配列に1と0が必要です..誰か助けてください

4

3 に答える 3

5

これは、エンコーディングからの正しい結果です。エンコーディングでは、ビットではなくバイトが生成されます。bitsが必要な場合は、ビットごとの演算子を使用して各バイトを調べます。すなわち

foreach(var byte in d) {
    Console.WriteLine(byte & 1);
    Console.WriteLine(byte & 2);
    Console.WriteLine(byte & 4);
    Console.WriteLine(byte & 8);
    Console.WriteLine(byte & 16);
    Console.WriteLine(byte & 32);
    Console.WriteLine(byte & 64);
    Console.WriteLine(byte & 128);
}
于 2012-09-21T13:34:39.027 に答える
0

UTF エンコーディングは必要ありません。s'0'とs (文字) の文字列があり、 s とs (バイト) の'1'配列を取得したいとします。01

var str = "0101010";
var bytes = str.Select(a => (byte)(a == '1' ? 1 : 0)).ToArray();
于 2012-09-21T13:42:22.403 に答える
0
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
                    byte[] d = encoding.GetBytes(str5[1]);
var dest[] = new byte();
var iCoun = 0;
var iPowe = 1;
foreach(var byte in d)
{
  dest[i++] = (byte & iPowe);
  iPowe *= 2;
}
foreach(var byte in dest)
{
  Console.WriteLine(byte);
}
于 2012-09-21T13:41:29.283 に答える