C# convertit une chaîne à uint
J'ai une chaîne de 13 caractères.
string str = "HELLOWORLDZZZ";
et j'ai besoin de stocker ce que la représentation ASCII (hex) dans une variable uint. Comment puis-je faire cela?
REMARQUE: Cette chaîne d'origine n'est pas hex
Que voulez-vous dire n'est pas hex... représentation ascii EST une chaîne btw..
Voir mon édition de la nouvelle chaîne
Je ne... je ne suis pas la compréhension de ce que vous entendez par "convertir uint" voulez-vous dire la somme des valeurs ascii de tous les personnages?
Un uint est à seulement 4 octets de long. La représentation ASCII est de 1 octet de long. Comment exactement ce que vous prévoyez de stocker 13 caractères dans un 4-octet champ?
Que voulez-vous dire n'est pas hex... représentation ascii EST une chaîne btw..
Voir mon édition de la nouvelle chaîne
Je ne... je ne suis pas la compréhension de ce que vous entendez par "convertir uint" voulez-vous dire la somme des valeurs ascii de tous les personnages?
Un uint est à seulement 4 octets de long. La représentation ASCII est de 1 octet de long. Comment exactement ce que vous prévoyez de stocker 13 caractères dans un 4-octet champ?
OriginalL'auteur Andy Hin | 2010-11-16
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
Encodage.ASCII
.
GetBytes
pour convertir votre chaîne à unebyte
tableau avec le codage ASCII (chaque personnage unbyte
). Ensuite, appelezBitConverter.ToUInt32
pour convertir ce tableau d'octets à unuint
. Cependant, comme @R. Bemrose noté dans les commentaires, unuint
est à seulement 4byte
s, de sorte que vous aurez besoin de faire quelques partitionnement de votre tableau en premier.Le ASCII 7 bits de la table est utilisé pour convertir entre peu de représentations et caractères. Donc, "ABCD" devient
01000001 01000010 01000011 01000100
qui en décimal est "1094861636", la valeur que leuint
contiendrait.Génial. Donc j'ai juste 1 question de plus. Donc je convertir ma chaîne Ascii en tableau d'octets, puis-je le mettre dans le BitConvert.ToUint32, qui renvoie la valeur "1145258561" pour la chaîne "ABCD". De conversion que pour HEX-je obtenir "44434241" ce qui est génial! Sauf une chose - pourquoi est-il à l'envers? (41 = A, 42 = B, etc..). Je suis sûr qu'il a quelque chose à voir avec big endian little endian
Désolé, ouais,
BitConverter.ToUInt32
est en little endian, donc1145258561
est la bonne valeur décimale pour l'entrée de"ABCD"
. Vous pouvez inverser la matrice avant d'appelerBitConverter.ToUInt32
et vous obtiendrez la valeur décimale j'ai donné ci-dessus, qui correspond à41424344
dans l'hex.Grand. Fonctionne très bien. Juste pour toute référence future, il est depenent au-boutiste " de votre système d'ordinateur - si vous avez besoin de vérifier BitConvert.IsLittleEndian et d'inverser le tableau si nécessaire.
OriginalL'auteur bdukes
Ont un coup d'oeil à
Convertir.ToUInt32(string, int)
. Par exemple:oui, car il a changé la question à mi-chemin.
OriginalL'auteur Jon Skeet
OriginalL'auteur Femaref
Je pense que c'est la méthode que vous souhaitez
consultez la documentation ici.
OriginalL'auteur user467384
Voir mon commentaire, mais si vous voulez tout simplement de convertir une chaîne de caractères ASCII en Hexadécimal, qui est ce que je soupçonne:
n'était pas destiné à être efficace, je pense que la plupart d'entre nous sont encore à se demander ce que l'intention originale de la question est.
OriginalL'auteur kd7
Cela vous permettra de transformer votre
string
(avec une Base de 16 représentation) à unuint
.OriginalL'auteur Adam Maras
L'instant je crois que je comprends ce que vous voulez dans un commentaire sur bdukes réponse.
Si vous voulez le
hex
code pour chaque caractère de la chaîne, vous pouvez l'obtenir à l'aide de LINQ.hex
sera une chaîne41424344
OriginalL'auteur BrunoLM