2010-10-17 10 views
0

Je sais comment convertir des hexadécimaux en entiers lorsque je n'ai qu'un seul caractère hexadécimal. mais je reçois une chaîne de deux caractères.hexadécimal en entier

Je suis convertir les caractères en hexadécimal avec:

String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString())) 

permet donc alors dire que j'ai 01, et 3f que mes deux personnages de longueur. comment suis-je censé convertir ceux-ci en nombre entier? j'ai essayé de faire

int length = int.Parse("013f", System.Globalization.NumberStyles.AllowHexSpecifier); 

mais apparemment c'est incorrect. J'ai même pris les valeurs de ces deux, Concat'd les ensemble, et ensuite essayé de les analyser .. ce n'était évidemment pas juste

je fais quelque chose de mal en essayant d'analyser ces deux hexadécimaux dans une longueur, ou est le serveur im obtenir l'information d'utiliser un système de longueur non standard. parce que je peux obtenir les bonnes longueurs quand le premier caractère est 00, comme 0001 ou quelque chose. Im juste pas sûr de quand j'ai deux caractères de longueur.

EDIT: après quelques essais et erreurs, la valeur attendue est 491

Numéro de mise à jour deux:

Fondamentalement, le serveur me fournit une longue chaîne de deux caractères, qui vous indique la longueur des données suivantes.

Les deux caractères de cet attribut spécifique sont 01 et 3f. les données suivantes sont 491 caractères de long, qui, pour autant que je peux voir, n'a aucun rapport avec 013f quoi-si-jamais, mais je sais qu'il y en a un quelque part, parce qu'une autre application utilise exactement les mêmes données mais en ressortant résultats.

+0

quelle valeur obtenez-vous pour la longueur? –

+0

Qu'est-ce qui vous fait penser que ce code est incorrect? Il renvoie 319, qui est la représentation décimale de 0x013f –

+0

Pouvez-vous nous fournir plus de données s'il vous plaît? Sinon, ** 1) ** Covert to hex, ** 2) ** Permuter les deux derniers chiffres, ** 3) ** Ajouter 100 – Pedery

Répondre

3

Ce n'est pas vraiment clair quel est le problème.

La valeur hexadécimale 0x013F est 319. Votre code évalue correctement, même si j'utiliser NumberStyles.HexNumber plutôt que NumberStyles.AllowHexSpecifier:

int length = int.Parse("013f", NumberStyles.HexNumber); 

Quel numéro vous attendez 0x013F à convertir?

+0

Aussi, vous pouvez utiliser la méthode Convert.ToInt32(): http://msdn.microsoft.com/en-us/library/1k20k614.aspx –

+1

qui est ce que je fais, et qui sort avec 319 je pense que ce n'est pas la longueur dont j'ai besoin. – caesay

+1

319 est correct, n'est-ce pas? –

Questions connexes