如何将字符串“00001111”转换为字节

时间:2017-08-23 14:00:27

标签: c#

我想转换有价值“00001111”的字符串 到byte

我尝试使用此代码将字节转换为字符串:

byte b = 255;
string s = Convert.ToString(b, 2).PadLeft(8, '0');
Console.WriteLine(s);

此代码工作正常,但我需要相反的方法将二进制字符串转换回byte

2 个答案:

答案 0 :(得分:1)

所以经过一些搜索后,我发现这个问题似乎没有完全匹配。最接近的是converting to a byte[],其中建议的答案包括这个问题的解决方案,但代码比单个字节所需的更复杂。

如果您只有8个字符的字符串,则可以使用Convert.ToByte()方法:

string input = "00001111";
byte output = Convert.ToByte(input, 2);

值得注意的是,在尝试转换输入之前,应验证输入以确保它是有效的8个字符串。您实际上可以少于8个字符并且它将假设前导零,只要您至少有1个字符,但不能超过8个字符。字符必须是"0""1"。< / p>

虽然我猜这取决于您的输入数据确定是否需要验证的可靠性。

答案 1 :(得分:1)

即使标准库没有内置函数,你也可以很容易地写一个:

s.Length <= 8 && s.All(c => c == '0' || c == '1');

验证输入(在任何情况下您可能都想要这样做):

{{1}}