我想在vb.net控制台应用程序中将二进制转换为十进制。我当前的代码有什么问题?我似乎无法获得正确的二进制文件。
'Binary Numbers
Dim dec, remainder, m, sum As Integer
m = 1
Console.Write("Enter a decimal Number : ")
dec = Console.ReadLine()
While (dec > 0)
remainder = dec Mod 2
sum += m * remainder
dec = dec / 2
m = m * 10
End While
c.WriteLine("Binary Numbers = {0} ", sum)
c.ReadKey()
答案 0 :(得分:0)
正如汉斯在评论中所说,你应该设置Option Strict On
以禁止可能产生意外结果的自动转换。您还应该在尝试将用户输入转换为数字之前验证用户输入。
您可以使用Convert.ToString将十进制数直接转换为二进制字符串。下面的代码执行该操作,然后(如果您想编写自己的循环代码)相当于原始循环。
Option Explicit On
Option Strict On
Module Module1
Sub Main()
Dim dec As Integer, decstr As String, binStr As String = ""
Do
Console.WriteLine("Enter a decimal number")
decstr = Console.ReadLine
Loop Until Integer.TryParse(decstr, dec)
Console.WriteLine("Using Convert.ToString: {0}", Convert.ToString(dec, 2))
Do While (dec > 0)
Dim remainder As Integer = dec Mod 2
binStr = remainder.ToString & binStr
dec = dec \ 2
Loop
Console.WriteLine("Using loop: {0}", binStr)
Console.ReadLine()
End Sub
End Module