Pregunta

Por lo tanto, tengo una cadena de 13 caracteres.

string str = "HELLOWORLDZZZ";

y tengo que guardar esto como representación ASCII (hex) en una variable uint. ¿Cómo puedo hacer esto?

¿Fue útil?

Solución

Se puede usar Encoding.ASCII . GetBytes para convertir la cadena a una matriz byte con codificación ASCII (cada uno personaje toma una byte). A continuación, llamar BitConverter.ToUInt32 convertir ese conjunto de bytes a un uint. Sin embargo, como @R. Bemrose se señala en los comentarios, un uint está a sólo 4 bytes, por lo que tendrá que hacer alguna partición de su gama en primer lugar.

Otros consejos

Tener un vistazo a Convert.ToUInt32(string, int) . Por ejemplo:

uint parsed = Convert.ToUInt32(str, 16);
uint.Parse(hexString, System.Globalization.NumberStyles.HexNumber);

creo que este es el método que desea

Convert.ToUInt32(yourHexNumber, 16);

aquí .

Ver mi comentario, pero si desea convertir sólo una cadena ASCII a hexadecimal, que es lo que yo sospechaba:

public string HexIt(string yourString)
{
    string hex = "";
    foreach (char c in yourString)
    {
        int tmp = c;
        hex += String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString()));
    }
    return hex;
}

Esto convertirá su string (con una representación de base 16) a un uint.

uint val = Convert.ToUInt32(str, 16);

Ahora creo que entiendo lo que quieres en un comentario en bdukes respuesta.

Si desea que el código hex para cada carácter de la cadena se puede conseguir utilizando LINQ.

var str = "ABCD";
var hex = str.Select(c => ((int)c).ToString("X"))
    .Aggregate(String.Empty, (x, y) => x + y);

hex será un 41424344 cadena

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top