我想转换有价值“00001111”的字符串
到byte
我尝试使用此代码将字节转换为字符串:
byte b = 255;
string s = Convert.ToString(b, 2).PadLeft(8, '0');
Console.WriteLine(s);
此代码工作正常,但我需要相反的方法将二进制字符串转换回byte
。
答案 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}}