todas - ¿Hay alguna forma incorporada de convertir un entero en una cadena(de cualquier base) en C#?
itoa en c (6)
Convert.ToString () solo permite valores base de 2, 8, 10 y 16 por alguna razón impar; ¿Hay alguna forma oscura de proporcionar una base entre 2 y 16?
Probablemente para eliminar a alguien escribiendo un 7 en lugar de un 8, ya que los usos para bases arbitrarias son pocos (pero no inexistentes).
Aquí hay un método de ejemplo que puede hacer conversiones básicas arbitrarias. Puede usarlo si lo desea, sin restricciones.
string ConvertToBase(int value, int toBase)
{
if (toBase < 2 || toBase > 36) throw new ArgumentException("toBase");
if (value < 0) throw new ArgumentException("value");
if (value == 0) return "0"; //0 would skip while loop
string AlphaCodes = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string retVal = "";
while (value > 0)
{
retVal = AlphaCodes[value % toBase] + retVal;
value /= toBase;
}
return retVal;
}
No probado, pero deberías ser capaz de resolverlo desde aquí.
Podría darle una oportunidad a http://www.codeproject.com/KB/macros/Convert.aspx .
Podrías probar lo siguiente:
http://www.dotnetspider.com/resources/938-Conversion-Decimal-number-any-Base-vice.aspx
Esto al menos da la impresión de que podría tener cualquier base (de 2-> 16). Aunque estoy un poco confundido sobre por qué querrías!
//untested -- public domain
// if you do a lot of conversions, using StringBuilder will be
// much, much more efficient with memory and time than using string
// alone.
string toStringWithBase(int number, int base)
{
if(0==number) //handle corner case
return "0";
if(base < 2)
return "ERROR: Base less than 2";
StringBuilder buffer = new StringBuilder();
bool negative = (number < 0) ? true : false;
if(negative)
{
number=-number;
buffer.Append(''-'');
}
int digits=0;
int factor=1;
int runningTotal=number;
while(number > 0)
{
number = number/base;
digits++;
factor*=base;
}
factor = factor/base;
while(factor >= 1)
{
int remainder = (number/factor) % base;
Char out = ''0''+remainder;
if(remainder > 9)
out = ''A'' + remainder - 10;
buffer.Append(out);
factor = factor/base;
}
return buffer.ToString
}
string foo = Convert.ToString(myint,base);
http://msdn.microsoft.com/en-us/library/14kwkz77.aspx
EDITAR : Mi mal, esto arrojará una excepción de argumento a menos que pase las bases especificadas (2, 8, 10 y 16)
Tu probablemente SOL si quieres usar una base diferente (¿pero por qué ???).
Lo siento, no estoy respondiendo tu pregunta, pero ... La elección de las bases no es arbitraria. Tu PC está convirtiendo constantemente desde la base 2 (es un sistema binario interno) a la base 10 legible por humanos. La base 8 y 16 son muy fáciles de convertir ay desde la base 2 y se usan a menudo para que una computadora Y un humano puedan leer el valor ( por ejemplo, GUID)