我需要将Byte[]
转换为包含二进制数字序列的string
。我不能使用Encoding
,因为它只是将字节编码为字符!
例如,拥有这个数组:
new byte[] { 254, 1 };
我想要这个输出:
"1111111000000001"
答案 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”
我真的没有得到你想要实现的目标。