[英]C# Program that converts decimal number to binary
因此,我必須制作一個將十進制數轉換為二進制並打印它的程序,但不使用Convert。 我到了可以打印出數字的地步,但是相反(例如:12表示為0011而不是1100),任何人都知道如何解決該問題? 這是我的代碼:
Console.Write("Number = ");
int n = int.Parse(Console.ReadLine());
string counter = " ";
do
{
if (n % 2 == 0)
{
counter = "0";
}
else if (n % 2 != 0)
{
counter = "1";
}
Console.Write(counter);
n = n / 2;
}
while (n >= 1);
一個簡單的解決方案是在開始時添加它們:
Console.Write("Number = ");
int n = int.Parse(Console.ReadLine());
string counter = "";
while (n >= 1)
{
counter = (n % 2) + counter;
n = n / 2;
}
Console.Write(counter);
您實際上甚至不需要if語句
您可以將它們插入StringBuidler中,而不是立即編寫它們
var sb = new StringBuilder();
....
sb.Insert(0, counter);
然后使用該StringBuilder
var result = sb.ToString();
完成計算后可以反轉字符串
因為使用%2確定位值時從最低有效數字開始,所以生成的數字相反。 不過,您所做的並不壞,因為這是確定位的便捷方法。 您要做的就是通過收集輸出來反轉輸出,直到生成了所有位,然后以相反的順序輸出所有內容。 (我沒有嘗試編譯運行,可能有錯字)
一種簡單的解決方案是
System.Text.StringBuilder反向=新的System.Text.StringBuilder();
然后在您的代碼中替換
Console.Write(counter);
同
reversi.Append(counter);
最后添加循環的結尾,添加如下代碼
string s = reversi.ToString();
for (int ii = s.Length-1; ii >= 0; --ii)
{
Console.Write(s[ii]);
}
有更好的方法可以做到這一點,但這很容易理解為什么它可以修復您的代碼-似乎您正在嘗試學習C#。
如果我沒錯的話
int value = 8;
string binary = Convert.ToString(value, 2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.