C# 如何将字符串转换为“like”;00001111“;字节
我想转换值为“00001111”的字符串 到C# 如何将字符串转换为“like”;00001111“;字节,c#,C#,我想转换值为“00001111”的字符串 到字节 我尝试将以下代码从字节转换为字符串: byte b = 255; string s = Convert.ToString(b, 2).PadLeft(8, '0'); Console.WriteLine(s); 这段代码很好用,但我需要相反的方法将二进制字符串转换回字节,所以经过一些搜索之后,我似乎找不到与这个问题完全匹配的。最接近的是,建议的答案确实包含了这个问题的解决方案,但代码比仅仅一个字节所需的更复杂 如果您只有一个8个字符的字符串,则
字节
我尝试将以下代码从字节转换为字符串:
byte b = 255;
string s = Convert.ToString(b, 2).PadLeft(8, '0');
Console.WriteLine(s);
这段代码很好用,但我需要相反的方法将二进制字符串转换回
字节,所以经过一些搜索之后,我似乎找不到与这个问题完全匹配的。最接近的是,建议的答案确实包含了这个问题的解决方案,但代码比仅仅一个字节所需的更复杂
如果您只有一个8个字符的字符串,则可以使用以下方法:
值得注意的是,在转换输入之前,您应该验证输入,以确保它是有效的8个字符字符串。实际上,您可以少于8个字符,并且它将假定前导零,只要您至少有1个字符,但不能超过8个。字符必须是“0”
或“1”
虽然我想这取决于输入数据的可靠性,以确定是否需要验证。即使标准库没有内置函数,您也可以非常轻松地编写一个:
var s = "00001111";
var n = 0d;
for(var i = 0; i < s.Length; i++)
{
var d = s[s.Length - 1 - i] == '0' ? 0 : 1;
n += (d * Math.Pow(2, i));
}
var b = (byte)(((int)n) & 0xFF);
var s=“00001111”;
var n=0d;
对于(变量i=0;i
要验证输入(在任何情况下,您都可能希望这样做):
s.Length c='0'| | c=='1');
您的代码似乎可以-字节到字符串
但您的问题是字符串到字节
-您需要这两个还是其中一个?这不是的副本吗?我尝试了以下代码:。。。然后呢?怎么搞的?出什么事了?@Wndrr:没有;it’这不是同一个问题,如果你最终使用了Convert.ToByte()
作为函数的一部分,那么编写自己的函数的意义就不会被忽略了吗?您可能还希望验证null和空字符串
var s = "00001111";
var n = 0d;
for(var i = 0; i < s.Length; i++)
{
var d = s[s.Length - 1 - i] == '0' ? 0 : 1;
n += (d * Math.Pow(2, i));
}
var b = (byte)(((int)n) & 0xFF);
s.Length <= 8 && s.All(c => c == '0' || c == '1');