para - decimal a binario recursivo c#
Conversión de entero a binario en C# (16)
¿Cómo convertir un número entero en su representación binaria?
Estoy usando este código:
String input = "8";
String output = Convert.ToInt32(input, 2).ToString();
Pero arroja una excepción:
No se pudieron encontrar los dígitos analizables
BCL siempre que Convert.ToString(n, 2)
sea bueno, pero en caso de que necesite una implementación alternativa, que es unos pocos ticks más rápidos que los proporcionados por BCL.
La implementación personalizada funciona para todos los enteros (-ve y + ve). Fuente original tomada de https://davidsekar.com/algorithms/csharp-program-to-convert-decimal-to-binary
static string ToBinary(int n)
{
int j = 0;
char[] output = new char[32];
if (n == 0)
output[j++] = ''0'';
else
{
int checkBit = 1 << 30;
bool skipInitialZeros = true;
// Check the sign bit separately, as 1<<31 will cause
// +ve integer overflow
if ((n & int.MinValue) == int.MinValue)
{
output[j++] = ''1'';
skipInitialZeros = false;
}
for (int i = 0; i < 31; i++, checkBit >>= 1)
{
if ((n & checkBit) == 0)
{
if (skipInitialZeros)
continue;
else
output[j++] = ''0'';
}
else
{
skipInitialZeros = false;
output[j++] = ''1'';
}
}
}
return new string(output, 0, j);
}
El código anterior es mi implementación. Por lo tanto, estoy ansioso por escuchar cualquier comentario :)
Esta función convertirá un entero a binario en C #:
public static string ToBinary(int N)
{
int d = N;
int q = -1;
int r = -1;
string binNumber = string.Empty;
while (q != 1)
{
r = d % 2;
q = d / 2;
d = q;
binNumber = r.ToString() + binNumber;
}
binNumber = q.ToString() + binNumber;
return binNumber;
}
Muy simple sin código adicional, solo entrada, conversión y salida.
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);
}
}
}
Otra solución alternativa pero también en línea es:
int number = 25;
string binary = Enumerable.Range(0, (int) Math.Log(number, 2) + 1).Aggregate(string.Empty, (collected, bitshifts) => (number >> bitshifts) % 2 + collected);
Sé que esta respuesta sería similar a la mayoría de las respuestas que ya están aquí, pero noté que casi ninguna de ellas usa un for-loop. Este código funciona, y se puede considerar simple, en el sentido de que funcionará sin funciones especiales, como ToString () con parámetros, y no es demasiado largo también. Tal vez algunos prefieran for-loops en lugar de while while-loop, esto puede ser adecuado para ellos.
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;
}
Su ejemplo tiene un número entero expresado como una cadena. Supongamos que su número entero es en realidad un número entero, y desea tomar el número entero y convertirlo en una cadena binaria.
int value = 8;
string binary = Convert.ToString(value, 2);
Que devuelve 1000
forma primitiva:
public string ToBinary(int n)
{
if (n < 2) return n.ToString();
var divisor = n / 2;
var remainder = n % 2;
return ToBinary(divisor) + remainder;
}
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;
}
Convert.ToInt32(string, base)
no convierte la base en su base. Supone que la cadena contiene un número válido en la base indicada y se convierte en base 10.
Entonces, está recibiendo un error porque "8" no es un dígito válido en la base 2.
String str = "1111";
String Ans = Convert.ToInt32(str, 2).ToString();
Mostrará 15
(1111 base 2 = 15 base 10)
String str = "f000";
String Ans = Convert.ToInt32(str, 16).ToString();
61440
.
Convierta desde cualquier base clásica a cualquier base en C #
String number = "100";
int fromBase = 16;
int toBase = 10;
String result = Convert.ToString(Convert.ToInt32(number, fromBase), toBase);
// result == "256"
Bases soportadas son 2, 8, 10 y 16
static void Main(string[] args)
{
Console.WriteLine("Enter number for converting to binary numerical system!");
int num = Convert.ToInt32(Console.ReadLine());
int[] arr = new int[16];
//for positive integers
if (num > 0)
{
for (int i = 0; i < 16; i++)
{
if (num > 0)
{
if ((num % 2) == 0)
{
num = num / 2;
arr[16 - (i + 1)] = 0;
}
else if ((num % 2) != 0)
{
num = num / 2;
arr[16 - (i + 1)] = 1;
}
}
}
for (int y = 0; y < 16; y++)
{
Console.Write(arr[y]);
}
Console.ReadLine();
}
//for negative integers
else if (num < 0)
{
num = (num + 1) * -1;
for (int i = 0; i < 16; i++)
{
if (num > 0)
{
if ((num % 2) == 0)
{
num = num / 2;
arr[16 - (i + 1)] = 0;
}
else if ((num % 2) != 0)
{
num = num / 2;
arr[16 - (i + 1)] = 1;
}
}
}
for (int y = 0; y < 16; y++)
{
if (arr[y] != 0)
{
arr[y] = 0;
}
else
{
arr[y] = 1;
}
Console.Write(arr[y]);
}
Console.ReadLine();
}
}
// I use this function
public static string ToBinary(long number)
{
string digit = Convert.ToString(number % 2);
if (number >= 2)
{
long remaining = number / 2;
string remainingString = ToBinary(remaining);
return remainingString + digit;
}
return digit;
}
int x=550;
string s=" ";
string y=" ";
while (x>0)
{
s += x%2;
x=x/2;
}
Console.WriteLine(Reverse(s));
}
public static string Reverse( string s )
{
char[] charArray = s.ToCharArray();
Array.Reverse( charArray );
return new string( charArray );
}
class Program
{
static void Main(string[] args)
{
var @decimal = 42;
var binaryVal = ToBinary(@decimal, 2);
var binary = "101010";
var decimalVal = ToDecimal(binary, 2);
Console.WriteLine("Binary value of decimal {0} is ''{1}''", @decimal, binaryVal);
Console.WriteLine("Decimal value of binary ''{0}'' is {1}", binary, decimalVal);
Console.WriteLine();
@decimal = 6;
binaryVal = ToBinary(@decimal, 3);
binary = "20";
decimalVal = ToDecimal(binary, 3);
Console.WriteLine("Base3 value of decimal {0} is ''{1}''", @decimal, binaryVal);
Console.WriteLine("Decimal value of base3 ''{0}'' is {1}", binary, decimalVal);
Console.WriteLine();
@decimal = 47;
binaryVal = ToBinary(@decimal, 4);
binary = "233";
decimalVal = ToDecimal(binary, 4);
Console.WriteLine("Base4 value of decimal {0} is ''{1}''", @decimal, binaryVal);
Console.WriteLine("Decimal value of base4 ''{0}'' is {1}", binary, decimalVal);
Console.WriteLine();
@decimal = 99;
binaryVal = ToBinary(@decimal, 5);
binary = "344";
decimalVal = ToDecimal(binary, 5);
Console.WriteLine("Base5 value of decimal {0} is ''{1}''", @decimal, binaryVal);
Console.WriteLine("Decimal value of base5 ''{0}'' is {1}", binary, decimalVal);
Console.WriteLine();
Console.WriteLine("And so forth.. excluding after base 10 (decimal) though :)");
Console.WriteLine();
@decimal = 16;
binaryVal = ToBinary(@decimal, 11);
binary = "b";
decimalVal = ToDecimal(binary, 11);
Console.WriteLine("Hexidecimal value of decimal {0} is ''{1}''", @decimal, binaryVal);
Console.WriteLine("Decimal value of Hexidecimal ''{0}'' is {1}", binary, decimalVal);
Console.WriteLine();
Console.WriteLine("Uh oh.. this aint right :( ... but let''s cheat :P");
Console.WriteLine();
@decimal = 11;
binaryVal = Convert.ToString(@decimal, 16);
binary = "b";
decimalVal = Convert.ToInt32(binary, 16);
Console.WriteLine("Hexidecimal value of decimal {0} is ''{1}''", @decimal, binaryVal);
Console.WriteLine("Decimal value of Hexidecimal ''{0}'' is {1}", binary, decimalVal);
Console.ReadLine();
}
static string ToBinary(decimal number, int @base)
{
var round = 0;
var reverseBinary = string.Empty;
while (number > 0)
{
var remainder = number % @base;
reverseBinary += remainder;
round = (int)(number / @base);
number = round;
}
var binaryArray = reverseBinary.ToCharArray();
Array.Reverse(binaryArray);
var binary = new string(binaryArray);
return binary;
}
static double ToDecimal(string binary, int @base)
{
var val = 0d;
if (!binary.All(char.IsNumber))
return 0d;
for (int i = 0; i < binary.Length; i++)
{
var @char = Convert.ToDouble(binary[i].ToString());
var pow = (binary.Length - 1) - i;
val += Math.Pow(@base, pow) * @char;
}
return val;
}
}
Fuentes de aprendizaje:
Todo lo que necesitas saber sobre https://www.mathsisfun.com/binary-number-system.html
Todo lo que necesita saber y más, incluido el algoritmo para convertir de decimal a binario http://www.electronics-tutorials.ws/binary/bin_2.html
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);
}
}//end Main
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;
}
// The algoritm gives us the binary number in reverse order (mirrored)
// We store it in an array so that we can reverse it back to normal
BinaryArray = BinaryResult.ToCharArray();
Array.Reverse(BinaryArray);
BinaryResult = new string(BinaryArray);
return BinaryResult;
}
}//end class Program
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;
}