我需要将一个Byte[]
转换为包含二进制数字序列的string
。我不能使用Encoding
,因为它只是将字节编码为字符!
例如,有这个数组:
new byte[] { 254, 1 };
我希望得到这个输出:
"1111111000000001"
我需要将一个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')));
richTextBox
中。非常感谢您的帮助和支持。 - Sudantha string StringIWant = BitConverter.ToString(byteData);
但我建议使用编码
。
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();
FF-FF-
... 我认为那是十六进制... 你知道如何将其转换成二进制10101010
吗? - Sudantha byte[] bList = { 0, 1, 2, 3, 4, 5 };
string s1 = BitConverter.ToString(bList);
string s2 = "";
foreach (byte b in bList)
{
s2 += b.ToString();
}
byte[]
中了。 - Sudantha