2011-04-13 3 views
1

Cela peut paraître étrange, mais mon problème est que j'ai une chaîne de texte des valeurs hexagonales à partir d'un fichier texte, comme ceci:C# - Convertir une chaîne de valeurs hexagonales à ensorceler

"0x0f, 0x40, 0xff, ...." 

Je les ai stockées dans un tableau divisé par les délimiteurs, mais ce que je dois maintenant faire est d'avoir un tableau d'octets de ce que Thay sont dans l'hexagone:

stringArray[0] = "0x0f"; 

byteArray[0] = 0x0f; 

Comment puis-je faire (l'utilisateur peut charger le fichier texte, donc je Je ne sais pas quelles sont les valeurs), y a-t-il une sorte d'arithmétique que je peux utiliser?

+0

La question elle-même est valable dans mon avis. La fermeture ne lui fera pas accepter plus de réponses, je suppose. user646265: Veuillez accepter plus de réponses qui vous ont aidé. Cela fera que plus de gens veulent vous aider. – OregonGhost

+1

Oui, je l'aurais fait, mais je viens de dépasser la réputation dont vous avez besoin pour accepter les réponses. Je le ferai à l'avenir, maintenant je suis à 16 points. – user646265

Répondre

1

Vous avez juste à analyser chaque chaîne. Parce que chacun est déjà une seule valeur, vous pouvez le faire:

byte b; 
if (byte.TryParse(s, NumberStyles.HexNumber, 
    CultureInfo.InvariantCulture.NumberFormat, out b)) 
{ 
    // b contains the value. 
} 

où s est la chaîne que vous souhaitez analyser, et b est la valeur résultante.

+0

Merci. Quand j'aurai assez de points de réputation, je voterai votre réponse. – user646265

+4

J'ajouterai malheureusement que la réponse est fausse. 'byte.TryParse' ne supporte pas le format 0x. Lisez-le [ici] (http://msdn.microsoft.com/en-us/library/system.globalization.numberstyles.aspx) 'HexNumber indique que les styles AllowLeadingWhite, AllowTrailingWhite et AllowHexSpecifier sont utilisés et' AllowHexSpecifier Strings sont analysés en utilisant ce style ne peut pas être préfixé avec "0x" ou "& h" ' – xanatos

3

Si votre chaîne est dans le bon format, vous pouvez créer votre tableau en utilisant ce code (va lancer des exceptions si l'entrée est mal formaté):

var text = "0x0f, 0x40, 0xff"; 
var bytes = text 
    .Split(new[] { ", " }, StringSplitOptions.None) 
    .Select(s => (Byte) Int32.Parse(s.Substring(2), AllowHexSpecifier)); 
0

non de chaîne hexagonale Odd est correcte. Vérifiez la source de vous obtenez cette chaîne. Il est dû à la troncature de la chaîne en raison de limiter le nombre de caractères. Si chaîne est image est stockée dans la base de données, puis le récupérer programme à l'aide de ne pas utiliser d'outils

j'avais même problème avec .net et MSSQL et en utilisant webservice et Java client

Questions connexes