C# 在文本框中显示字节数组而不转换为可读字符串

C# 在文本框中显示字节数组而不转换为可读字符串,c#,C#,我试图从textBox1获取ASCII,并在textBox2中以二进制显示文本。一个简单的ASCII到二进制转换器 private void button1_Click(object sender, EventArgs e) { byte[] inVAR = System.Text.Encoding.ASCII.GetBytes(textBox1.Text); string outVAR = inVAR.ToString();

我试图从textBox1获取ASCII,并在textBox2中以二进制显示文本。一个简单的ASCII到二进制转换器

        private void button1_Click(object sender, EventArgs e)
    {
        byte[] inVAR = System.Text.Encoding.ASCII.GetBytes(textBox1.Text);
        string outVAR = inVAR.ToString();
        textBox2.Text = outVAR;

    }
这当然会导致输出与输入相同,因为我正在将字节数组转换回可读字符串

我的问题是如何将ASCII文本转换为二进制,但也转换为字符串类型,以便在文本框中显示它

本质上,我是在问如何创建这个ASCII到二进制转换器,因为我的方法似乎是错误的

谢谢

决心!谢谢你的SLaks和OlimilOops:

textBox2.Text = string.Join(" ", inVAR.Select(b => Convert.ToString(b, 2).ToUpper()));

听起来好像您想显示每个字节的数值,大概由某种字符分隔:

string.Join("separator", bytes)
如果要在基础中显示,可以使用LINQ:

bytes.Select(b => Convert.ToString(b, 2))

如果您愿意使用十六进制而不是直接二进制(1和0),您可以执行以下操作

var builder = new StringBuilder();
builder.Append("0x");
foreach (var b in inVAR) {
  builder.AppendFormat("{0:x}", b);
}
textBox2.Text = builder.ToString();

以下是适用于多种情况的防水解决方案:

    string stringToHex(string astr)
    {
        return StringToHex(astr, System.Text.Encoding.Default);
    }
    string stringToHex(string astr, System.Text.Encoding enc)
    {
        return bytesToHex(enc.GetBytes(astr));
    }
    string bytesToHex(byte[] bytes)
    {
        if (bytes.Length == 0) return "";
        var sb = new StringBuilder();
        var n = bytes.Length - 1;
        for(int i = 0; i < n; i++) 
        {
            sb.Append(byteToHex(bytes[i]));
            sb.Append(" ");
        }
        sb.Append(byteToHex(bytes[n]));
        return sb.ToString();
    }
    string byteToHex(byte b)
    {
        string hx = Convert.ToString(b, 16).ToUpper();
        if (hx.Length < 2) hx = "0" + hx;
        return hx;
    }
stringToHex字符串(stringastr)
{
返回StringToHex(astr,System.Text.Encoding.Default);
}
字符串stringToHex(字符串astr,System.Text.enc)
{
返回bytesToHex(enc.GetBytes(astr));
}
字符串bytesToHex(字节[]字节)
{
如果(bytes.Length==0)返回“”;
var sb=新的StringBuilder();
var n=字节。长度-1;
对于(int i=0;i
textBox2.Text=string.Join(“,因瓦.Select(b=>Convert.ToString(b,16.ToUpper()));谢谢你们两位。SLaks给了我想要的东西。谢谢你让事情变得更简单。:)对于那些将其标记为重复的人:此处答案中给出的函数返回字符串,而另一个问题答案中的函数返回字节数组。所以我认为这不是一个复制品。