C#无法将字符串转换为字节数组到期望的结果?

时间:2012-09-21 13:33:30

标签: c# string bytearray

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

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

但它给我字节数组的ASCII,如48和49,但我想在我的字节数组中有1和0 ..可以任何一个帮助

3 个答案:

答案 0 :(得分:5)

这是编码的正确结果。编码产生字节,而不是。如果需要,则使用逐位运算符检查每个字节。即。

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);
}

答案 1 :(得分: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);
}

答案 2 :(得分:0)

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

var str = "0101010";
var bytes = str.Select(a => (byte)(a == '1' ? 1 : 0)).ToArray();