2

我有一个只存储 1 和 0 的字符串。现在我需要将它转换为字节数组。我试过 ..

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

但它给了我 ASCII 的字节数组,如 48 和 49,但我想要 1 和 0 在我的字节数组中......任何人都可以帮忙

4

3 回答 3

5

这是编码的正确结果。编码产生字节,而不是。如果你想要bits,那么使用按位运算符来检查每个字节。IE

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
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 回答
0

不需要 UTF 编码,你说你有一个'0's 和'1's (字符)的字符串,你想得到一个0s 和1s (字节)的数组:

var str = "0101010";
var bytes = str.Select(a => (byte)(a == '1' ? 1 : 0)).ToArray();
于 2012-09-21T13:42:22.403 回答