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不包含您认为的内容。以下文章列出了一系列不同的方法: