C# 翻转二进制文件

C# 翻转二进制文件,c#,arrays,binary,C#,Arrays,Binary,我想将二进制文件翻转到1或0。例如,我有二进制的101,输出应该是010。我一直试图遍历数组并更改值,但输出总是0,000,0000,00 以下是我正在使用的代码: static void Main(string[] args) { Console.Write("Input Binary: "); String x = Console.ReadLine(); char[] bin = x.ToCharArray(); int

我想将二进制文件翻转到
1
0
。例如,我有二进制的
101
,输出应该是
010
。我一直试图遍历数组并更改值,但输出总是
0,000,0000,00

以下是我正在使用的代码:

static void Main(string[] args)
    {
        Console.Write("Input Binary: ");
        String x = Console.ReadLine();
        char[] bin = x.ToCharArray();
        int[] nbin =  new int[bin.Length];

        for (int i = 0; i < bin.Length; i ++)
        {

            int a = bin[i];
            if(a == 0)
            {

                nbin.SetValue(1, i);

            }
            if(a == 1)
            {

                nbin.SetValue(0, i);
            }

        }

        foreach (var e in nbin)
        {
            Console.Write(e);
        }

        Console.Read();
    }
static void Main(字符串[]args)
{
编写(“输入二进制:”);
字符串x=Console.ReadLine();
char[]bin=x.ToCharArray();
int[]nbin=新的int[bin.Length];
对于(int i=0;i
您正在将整数与字符进行比较,这可能永远不会得到预期的结果,因为您正在与字符的ASCII值进行比较

字符在C#中用
'
表示,因此应将它们添加到条件中的0和1中:

if(a == '0')
{

    nbin.SetValue(1, i);

}
if(a == '1')
{

    nbin.SetValue(0, i);
}
如果用户输入了奇怪的内容,也可以打印错误消息:

if(a == '0')
{

    nbin.SetValue(1, i);

} else if(a == '1')
{

    nbin.SetValue(0, i);
} else 
{
    Console.WriteLine("Input Invalid!");
    return;
}

将数据作为字符串读入,然后将其转换为
char
数组。字符表示给定字符的码点。字符
0
具有码点48,如果使用
char
文字,而不是数字0,则仅为
'0'

您应该与角色进行比较:

if(a == '0')
查看一个

为什么不使用不带数组的字符串中的字符

  String x = "101";

  String result = string.Concat(x.Select(c => c == '0' ? '1' : '0'));

  // 010
  Console.Write(result);

难道
~
运算符不只是反转位吗?这可能是0!='0'? 0和1(您的输入)的字符值不是数字值0和1Try-by-step-debuging(F11),请查看a不包含您认为的内容。以下文章列出了一系列不同的方法: