我想编写一个程序来测试字符串是否是有效的二进制文件并将其转换为十进制?下面是我的代码无法正常工作
private void BinarytoDecimal_Click(object sender, EventArgs e)
{
string a = "";
a = toBeConverted.Text;
long y;
y = Convert.ToInt64(a);
for (int x = 0; x < a.Length; x++)
{
char h = a[x];
if (h > '1' && h < '0')
{
MessageBox.Show("it is not a valid binary");
break;
}
if(x == a.Length - 1)
{
long d = 0 , i = 0 , r , n;
n = Convert.ToInt64(a);
while (n != 0) {
r = n % 10;
n /= 10;
d += r * Math.Pow(2, i);
++i;
}
labelConverted.Text = d.ToString() + " base10";
}
}
}
答案 0 :(得分:1)
BTW是一个单行代码,使用
将二进制字符串转换为十进制Convert.ToInt32("YourBinaryString", 2).ToString();
但是,如果你没有LINQ而不是
var s = "101011"; //Your Binary String
var dec = 0;
var bl = Regex.Match(s, @"[-01]*");
if(s == bl.Value)
{
for( int i=0; i<s.Length; i++ )
{
if( s[s.Length-i-1] == '0' )
continue;
dec += (int)Math.Pow( 2, i );
}
}
答案 1 :(得分:0)
所以你想检查输入字符串是否是有效的二进制数,还想将其转换为十进制数?
以下代码可以帮助您:
string inputStr = toBeConverted.Text;
if(inputStr.All(x=> x=='1' || x=='0')) // check all character is either 0 or 1
{
// it is a valid binary
string output = Convert.ToInt32(inputStr , 2).ToString();
}
else
{
// Display message that not a valid binary
}