如何将整数转换为二进制表示?
我正在使用此代码:
String input = "8";
String output = Convert.ToInt32(input, 2).ToString();
Run Code Online (Sandbox Code Playgroud)
但它引发了一个例外:
找不到任何可解析的数字
Ant*_*ram 316
您的示例有一个表示为字符串的整数.假设你的整数实际上是一个整数,你想取整数并将其转换为二进制字符串.
int value = 8;
string binary = Convert.ToString(value, 2);
Run Code Online (Sandbox Code Playgroud)
哪个返回1000.
sri*_*mak 43
从任何经典基数转换为C#中的任何基数
String number = "100";
int fromBase = 16;
int toBase = 10;
String result = Convert.ToString(Convert.ToInt32(number, fromBase), toBase);
// result == "256"
Run Code Online (Sandbox Code Playgroud)
支持的碱基为2,8,10和16
小智 35
非常简单,无需额外代码,只需输入,转换和输出.
using System;
namespace _01.Decimal_to_Binary
{
class DecimalToBinary
{
static void Main(string[] args)
{
Console.Write("Decimal: ");
int decimalNumber = int.Parse(Console.ReadLine());
int remainder;
string result = string.Empty;
while (decimalNumber > 0)
{
remainder = decimalNumber % 2;
decimalNumber /= 2;
result = remainder.ToString() + result;
}
Console.WriteLine("Binary: {0}",result);
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 12
http://zamirsblog.blogspot.com/2011/10/convert-decimal-to-binary-in-c.html
public string DecimalToBinary(string data)
{
string result = string.Empty;
int rem = 0;
try
{
if (!IsNumeric(data))
error = "Invalid Value - This is not a numeric value";
else
{
int num = int.Parse(data);
while (num > 0)
{
rem = num % 2;
num = num / 2;
result = rem.ToString() + result;
}
}
}
catch (Exception ex)
{
error = ex.Message;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
原始方式:
public string ToBinary(int n)
{
if (n < 2) return n.ToString();
var divisor = n / 2;
var remainder = n % 2;
return ToBinary(divisor) + remainder;
}
Run Code Online (Sandbox Code Playgroud)
使用Enumerable和 的另一种替代但也是内联解决方案LINQ是:
int number = 25;
string binary = Enumerable.Range(0, (int)Math.Log(number, 2) + 1).Aggregate(string.Empty, (collected, bitshifts) => ((number >> bitshifts) & 1 ) + collected);
Run Code Online (Sandbox Code Playgroud)
Convert.ToInt32(string, base)没有基地转换到您的基地.它假定字符串在指定的基数中包含有效数字,并转换为基数10.
因此,您收到错误,因为"8"不是基数2中的有效数字.
String str = "1111";
String Ans = Convert.ToInt32(str, 2).ToString();
Run Code Online (Sandbox Code Playgroud)
将显示15(1111 base 2 = 15 base 10)
String str = "f000";
String Ans = Convert.ToInt32(str, 16).ToString();
Run Code Online (Sandbox Code Playgroud)
会显示61440.
小智 5
static void convertToBinary(int n)
{
Stack<int> stack = new Stack<int>();
stack.Push(n);
// step 1 : Push the element on the stack
while (n > 1)
{
n = n / 2;
stack.Push(n);
}
// step 2 : Pop the element and print the value
foreach(var val in stack)
{
Console.Write(val % 2);
}
}
Run Code Online (Sandbox Code Playgroud)