如何将整数转换为二进制表示形式?
我正在使用以下代码:
String input = "8";
String output = Convert.ToInt32(input, 2).ToString();
但它会抛出一个异常:
找不到任何可解析的数字
如何将整数转换为二进制表示形式?
我正在使用以下代码:
String input = "8";
String output = Convert.ToInt32(input, 2).ToString();
但它会抛出一个异常:
找不到任何可解析的数字
您的示例包含一个表示为字符串的整数。假设您的整数实际上是整数,并且您想将该整数转换为二进制字符串。
int value = 8;
string binary = Convert.ToString(value, 2);
返回1000。
int value = Convert.ToInt32("1101", 2)
将会给变量 value
赋值为 13。 - flindeberg在C#中将任意经典进制转换为任意进制
string number = "100";
int fromBase = 16;
int toBase = 10;
string result = Convert.ToString(Convert.ToInt32(number, fromBase), toBase);
// result == "256"
支持的进制包括2、8、10和16进制。
string binary = Convert.ToString(533, 26);
,结果抛出了 ArgumentException: Invalid base。 - Magnum非常简单,没有多余的代码,只需输入、转换和输出。
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);
}
}
}
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;
}
原始的方法:
public string ToBinary(int n)
{
if (n < 2) return n.ToString();
var divisor = n / 2;
var remainder = n % 2;
return ToBinary(divisor) + remainder;
}
另一种使用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);
Convert.ToInt32(string, base)
并不会将数字转换成指定的进制,它假设输入的字符串已经是指定进制下的合法数字,并将其转换为十进制。因此,你在使用base为2时出现错误,因为"8"并不是二进制中的合法数字。String str = "1111";
String Ans = Convert.ToInt32(str, 2).ToString();
将显示15
(1111二进制= 15十进制)
String str = "f000";
String Ans = Convert.ToInt32(str, 16).ToString();
将显示61440
。
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);
}
}
using System;
class Program
{
static void Main(string[] args) {
try {
int i = (int) Convert.ToInt64(args[0]);
Console.WriteLine("\n{0} converted to Binary is {1}\n", i, ToBinary(i));
} catch(Exception e) {
Console.WriteLine("\n{0}\n", e.Message);
}
}
public static string ToBinary(Int64 Decimal) {
// Declare a few variables we're going to need
Int64 BinaryHolder;
char[] BinaryArray;
string BinaryResult = "";
while (Decimal > 0) {
BinaryHolder = Decimal % 2;
BinaryResult += BinaryHolder;
Decimal = Decimal / 2;
}
BinaryArray = BinaryResult.ToCharArray();
Array.Reverse(BinaryArray);
BinaryResult = new string(BinaryArray);
return BinaryResult;
}
}
public static string ByteConvert (int num)
{
int[] p = new int[8];
string pa = "";
for (int ii = 0; ii<= 7;ii = ii +1)
{
p[7-ii] = num%2;
num = num/2;
}
for (int ii = 0;ii <= 7; ii = ii + 1)
{
pa += p[ii].ToString();
}
return pa;
}