Cómo: Convertir cadenas hexadecimales en tipos numéricos (Guía de programación de C#)
Actualización: Julio de 2008
En estos ejemplos se muestra cómo realizar las tareas siguientes:
Obtener el valor hexadecimal de cada uno de los caracteres de un elemento string.
Obtener el elemento char que corresponde a cada valor en una cadena hexadecimal.
Convertir un elemento string hexadecimal en un elemento int.
Convertir un elemento string hexadecimal en un elemento float.
Convertir una matriz de bytes en un elemento string hexadecimal.
Ejemplo
Este ejemplo genera el valor hexadecimal de cada uno de los caracteres de string. Primero, analiza string como una matriz de caracteres. Después, llama a ToInt32(Char) en cada uno de los caracteres para obtener sus respectivos valores numéricos. Finalmente, da formato al número como su representación hexadecimal en string.
string input = "Hello World!";
char[] values = input.ToCharArray();
foreach (char letter in values)
{
// Get the integral value of the character.
int value = Convert.ToInt32(letter);
// Convert the decimal value to a hexadecimal value in string form.
string hexOutput = String.Format("{0:X}", value);
Console.WriteLine("Hexadecimal value of {0} is {1}", letter, hexOutput);
}
/* Output:
Hexadecimal value of H is 48
Hexadecimal value of e is 65
Hexadecimal value of l is 6C
Hexadecimal value of l is 6C
Hexadecimal value of o is 6F
Hexadecimal value of is 20
Hexadecimal value of W is 57
Hexadecimal value of o is 6F
Hexadecimal value of r is 72
Hexadecimal value of l is 6C
Hexadecimal value of d is 64
Hexadecimal value of ! is 21
*/
Este ejemplo analiza una string de valores hexadecimales y genera el carácter correspondiente a cada valor hexadecimal. Primero, llama al método Split(array<Char[]) para obtener cada valor hexadecimal como una string individual en una matriz. A continuación, llama a ToInt32(String, Int32) para convertir el valor hexadecimal en un valor decimal representado como un valor de tipo int. Muestra dos formas distintas de obtener el carácter correspondiente a ese código de carácter. En la primera técnica, se utiliza el método ConvertFromUtf32(Int32), que devuelve el carácter correspondiente al argumento de tipo entero como string. En la segunda técnica, int se convierte de forma explícita en un valor de tipo char.
string hexValues = "48 65 6C 6C 6F 20 57 6F 72 6C 64 21";
string[] hexValuesSplit = hexValues.Split(' ');
foreach (String hex in hexValuesSplit)
{
// Convert the number expressed in base-16 to an integer.
int value = Convert.ToInt32(hex, 16);
// Get the character corresponding to the integral value.
string stringValue = Char.ConvertFromUtf32(value);
char charValue = (char)value;
Console.WriteLine("hexadecimal value = {0}, int value = {1}, char value = {2} or {3}",
hex, value, stringValue, charValue);
}
/* Output:
hexadecimal value = 48, int value = 72, char value = H or H
hexadecimal value = 65, int value = 101, char value = e or e
hexadecimal value = 6C, int value = 108, char value = l or l
hexadecimal value = 6C, int value = 108, char value = l or l
hexadecimal value = 6F, int value = 111, char value = o or o
hexadecimal value = 20, int value = 32, char value = or
hexadecimal value = 57, int value = 87, char value = W or W
hexadecimal value = 6F, int value = 111, char value = o or o
hexadecimal value = 72, int value = 114, char value = r or r
hexadecimal value = 6C, int value = 108, char value = l or l
hexadecimal value = 64, int value = 100, char value = d or d
hexadecimal value = 21, int value = 33, char value = ! or !
*/
Este ejemplo muestra otra forma de convertir una string hexadecimal en un entero, que consiste en llamar al método Parse(String, NumberStyles).
string hexString = "8E2";
int num = Int32.Parse(hexString, System.Globalization.NumberStyles.HexNumber);
Console.WriteLine(num);
//Output: 2274
El ejemplo siguiente muestra cómo convertir un elemento string hexadecimal en un elemento float mediante la clase System.BitConverter y el método Int32.Parse.
string hexString = "43480170";
uint num = uint.Parse(hexString, System.Globalization.NumberStyles.AllowHexSpecifier);
byte[] floatVals = BitConverter.GetBytes(num);
float f = BitConverter.ToSingle(floatVals, 0);
Console.WriteLine("float convert = {0}", f);
// Output: 200.0056
El ejemplo siguiente muestra cómo convertir una matriz de bytes en una cadena hexadecimal mediante la clase System.BitConverter.
byte[] vals = { 0x01, 0xAA, 0xB1, 0xDC, 0x10, 0xDD };
string str = BitConverter.ToString(vals);
Console.WriteLine(str);
str = BitConverter.ToString(vals).Replace("-", "");
Console.WriteLine(str);
/*Output:
01-AA-B1-DC-10-DD
01AAB1DC10DD
*/
Vea también
Tareas
Cómo: Determinar si una cadena representa un valor numérico (Guía de programación de C#)
Conceptos
Cadenas con formato numérico estándar
Referencia
Tipos (Guía de programación de C#)
Historial de cambios
Fecha |
Historial |
Motivo |
---|---|---|
Julio de 2008 |
Se han agregado los dos últimos ejemplos de código. |
Corrección de errores de contenido. |