378 votos

C# convertir de entero a hexadecimal y de vuelta otra vez

¿Cómo puedo convertir los siguientes?

2934 (entero) para B76 (hex)

Permítanme explicar lo que estoy tratando de hacer. Tengo Id de Usuario en mi base de datos que se almacenan como enteros. En lugar de tener a los usuarios la consulta de sus Identificadores quiero dejar de usar el valor hexadecimal. La razón principal es porque es más corta.

Así que no sólo tengo que ir de número entero a la hexagonal, pero también me necesitas para pasar de hexadecimal a entero.

Hay una forma fácil de hacer esto en C#?

714voto

Gavin Miller Puntos 21752
// Store integer 182
int decValue = 182;
// Convert integer 182 as a hex in a string variable
string hexValue = decValue.ToString("X");
// Convert the hex string back to the number
int decAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);

de http://www.geekpedia.com/KB8_How-do-I-convert-from-decimal-to-hex-and-hex-to-decimal.html

93voto

Scott Ivey Puntos 19577
int myInt = 2934;
string myHex = myInt.ToString("X");  // gives you hex
int myNewInt = Convert.ToInt32(myHex, 16);  // back to int again.

ver aquí para más información y ejemplos - http://msdn.microsoft.com/en-us/library/bb311038.aspx.

50voto

JaredPar Puntos 333733

Intente lo siguiente para convertir a hexadecimal

public static string ToHex(this int value) {
  return String.Format("0x{0:X}", value);
}

Y de nuevo

public static int FromHex(string value) {
  // strip the leading 0x
  if ( value.StartsWith("0x", StringComparison.OrdinalIgnoreCase)) {
    value = value.Substring(2);
  }
  return Int32.Parse(value, NumberStyles.HexNumber);
}

18voto

Joel Coehoorn Puntos 190579
string HexFromID(int ID)
{
    return ID.ToString("X");
}

int IDFromHex(string HexID)
{
    return int.Parse(HexID, System.Globalization.NumberStyles.HexNumber);
}

Realmente me pregunta el valor de esto, sin embargo. Eres objetivo declarado es hacer que el valor más corto, que será, pero que no es un objetivo en sí mismo. Que significa realmente hacer que sea más fácil de recordar o más fácil de escribir.

Si te refieres a más fáciles de recordar, entonces usted está tomando un paso atrás. Sabemos que es todavía el mismo tamaño, sólo codificados de manera diferente. Pero los usuarios no saben que las cartas están restringidos a 'A-F', y así la IDENTIFICACIÓN de ocupar el mismo espacio conceptual para ellos como si de la letra de 'a-Z'. Así que en lugar de ser como la memorización de un número de teléfono, se parece más a la memorización de un GUID (de longitud equivalente).

Si te refieres a escribir, en lugar de ser capaz de utilizar el teclado ahora el usuario debe utilizar la parte principal del teclado. Es probable que sea más difícil de escribir, porque no será una palabra de sus dedos a reconocer.

Una opción mucho mejor es dejar que ellos elijan un nombre real.

14voto

Brandon Puntos 35624

A Hexadecimal:

string hex = intValue.ToString("X");

Int:

int intValue = int.Parse(hex, System.Globalization.NumberStyles.HexNumber)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X