Question

Alors, j'ai une chaîne de 13 caractères.

string str = "HELLOWORLDZZZ";

et je dois stocker ce que la représentation ASCII (hexadécimal) dans une variable uint. Comment puis-je faire?

Était-ce utile?

La solution

Vous pouvez utiliser Encoding.ASCII . GetBytes pour convertir votre chaîne à un tableau de byte avec le codage ASCII (chaque le caractère d'une prise byte). Ensuite, appelez BitConverter.ToUInt32 pour convertir ce tableau d'octets à un uint. Cependant, comme @R. Bemrose indiqué dans les commentaires, un uint est seulement 4 bytes, vous aurez donc besoin de faire un peu le partitionnement de votre premier choix.

Autres conseils

Jetez un oeil à Convert.ToUInt32(string, int) . Par exemple:

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

Je pense que c'est la méthode que vous voulez

Convert.ToUInt32(yourHexNumber, 16);

voir la documentation .

Voir mon commentaire, mais si vous voulez convertir juste une chaîne ASCII à Hex, qui est ce que je soupçonne:

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;
}

Cela va convertir votre string (avec une représentation de base 16) à un uint.

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

Maintenant, je crois que je comprends ce que vous voulez dans un commentaire sur la réponse de bdukes.

Si vous voulez que le code hex pour chaque caractère de la chaîne vous pouvez l'obtenir en utilisant LINQ.

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

hex sera une 41424344 chaîne

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top