将 byte[] 转换为二进制形式的字符串表示形式
本文关键字:字符串 表示 二进制 byte 转换 | 更新日期: 2023-09-27 17:55:09
我需要将Byte[]
转换为包含二进制数序列的string
。我不能使用Encoding
因为它只是将字节编码为字符!
例如,具有以下数组:
new byte[] { 254, 1 };
我想要这个输出:
"1111111000000001"
您可以将任何数字整数基元转换为其二进制表示形式,作为带有 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"
我真的不明白你想达到什么目的。