Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将字符串转换为“like”;00001111“;字节_C# - Fatal编程技术网

C# 如何将字符串转换为“like”;00001111“;字节

C# 如何将字符串转换为“like”;00001111“;字节,c#,C#,我想转换值为“00001111”的字符串 到字节 我尝试将以下代码从字节转换为字符串: byte b = 255; string s = Convert.ToString(b, 2).PadLeft(8, '0'); Console.WriteLine(s); 这段代码很好用,但我需要相反的方法将二进制字符串转换回字节,所以经过一些搜索之后,我似乎找不到与这个问题完全匹配的。最接近的是,建议的答案确实包含了这个问题的解决方案,但代码比仅仅一个字节所需的更复杂 如果您只有一个8个字符的字符串,则

我想转换值为“00001111”的字符串 到
字节

我尝试将以下代码从字节转换为字符串:

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');