我最近得到了将ASCII字符串转换为二进制的答案....
byte[] inVAR = System.Text.Encoding.ASCII.GetBytes(textBox1.Text);
textBox2.Text = string.Join("", inVAR.Select(b => Convert.ToString(b, 2)));
这只是从Box1获取文本并将二进制等效项放在Box2中。
我的问题是缺少二进制文件的前导0。
例如:“A”给出“1000001”而不是“01000001”
我想我可以手动追加每个字符的前导零,但我担心这可能会破坏某些应该以“1”开头或已经是8位的字符。
有什么想法吗?
答案 0 :(得分:4)
您可以使用PadLeft
string.Join("", inVAR.Select(b => Convert.ToString(b, 2).PadLeft(8, '0')));
答案 1 :(得分:4)
您可以使用PadLeft
附加正确数量的字符。如果你已经有8个字符,则不会执行任何操作。如果你有更少,它将添加0使其成为8个字符。
textBox2.Text = string.Join("", inVAR.Select(b => Convert.ToString(b, 2)
.PadLeft(8, '0')));
答案 2 :(得分:3)
您可以为数组中的每个字节添加前导零:
textBox2.Text = string.Join("", inVAR.Select(b =>
Convert.ToString(b, 2).PadLeft(8, '0')));
如果在整个结果字符串中添加零,则如果其中一个字节的结果少于8个字符,则可能是错误的。