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

本文关键字:字符串 表示 二进制 byte 转换 | 更新日期: 2023-09-27 17:55:09

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

例如,具有以下数组:

new byte[] { 254, 1 };

我想要这个输出:

"1111111000000001"

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

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

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')));
string StringIWant = BitConverter.ToString(byteData);

但我建议与Encoding合作.

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

编辑:喜欢10101011010

从@Quintin鲁滨逊的回答;

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

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

BitConverter.ToString 适合你吗?

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"
我真的不明白你想达到什么目的。