C # chaîne de conversion à uint
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?
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 byte
s, 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);
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