翻转二进制文件

时间:2016-11-23 08:17:04

标签: c# arrays binary

我想将二进制文件翻转为10。例如,我有二进制文件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();
    }

3 个答案:

答案 0 :(得分:3)

您正在将整数与字符进行比较,这可能永远不会得到预期的结果,因为您正在与字符的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); 如果(a =='1') {     nbin.SetValue(0,i); 其他 {     Console.WriteLine(“输入无效!”);     返回; }

答案 1 :(得分:3)

为什么不在没有数组的情况下使用字符串中的字符?

  String x = "101";

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

  // 010
  Console.Write(result);

答案 2 :(得分:0)

您以字符串形式读取数据,然后将其转换为char数组。 char表示给定字符的代码点。 字符 0具有代码点48,如果您使用'0'字面值,则只有char,而不是数字 0。

你应该与角色进行比较:

if(a == '0')

查看ASCII table