将byte []转换为二进制的字符串表示形式

时间:2011-05-04 11:07:52

标签: c#

我需要将Byte[]转换为包含二进制数字序列的string。我不能使用Encoding,因为它只是将字节编码为字符!

例如,拥有这个数组:

new byte[] { 254, 1 };

我想要这个输出:

"1111111000000001"

5 个答案:

答案 0 :(得分:10)

您可以将任何数字整数基元转换为其二进制表示形式,并将其转换为Convert.ToString的字符串。对于数组中的每个byte执行此操作并使用LINQ连接结果非常简单:

var input = new byte[] { 254 }; // put as many bytes as you want in here
var result = string.Concat(input.Select(b => Convert.ToString(b, 2)));

<强>更新

上面的代码不会产生每个输入字节恰好有8个字符的结果,这样就不可能通过查看结果来知道输入是什么。要获得每字节恰好8个字符,需要进行一些小改动:

var result = string.Concat(input.Select(b => Convert.ToString(b, 2).PadLeft(8, '0')));

答案 1 :(得分:3)

string StringIWant = BitConverter.ToString(byteData);

但我建议使用Encoding ..

string System.Text.Encoding.UTF8.GetString(byte[])

编辑:对于10101011010

来自@Quintin Robinson的回答;

StringBuilder sb = new StringBuilder();
foreach (byte b in myByteArray)
    sb.Append(b.ToString("X2"));

string hexString = sb.ToString();

答案 2 :(得分:2)

也许您可以使用BitArray课程来完成您要找的内容?他们在参考文献中有一些示例代码,应该很容易转换为您正在寻找的内容。

答案 3 :(得分:1)

BitConverter.ToString会为你效力吗?

答案 4 :(得分:1)

byte[] bList = { 0, 1, 2, 3, 4, 5 };
string s1 = BitConverter.ToString(bList);
string s2 = "";
foreach (byte b in bList)
{
     s2 += b.ToString();
}

在这种情况下s1 =“01-02-03-04-05”
并且s2 =“012345”
我真的没有得到你想要实现的目标。