2010-04-24 6 views
5

J'ai besoin de convertir les caractères en valeurs hexadécimales. Se référer à la table ASCII mais j'ai quelques exemples énumérés ci-dessous:Besoin de convertir les valeurs chaîne/caractère en valeurs ASCII

  • carbonisation 1 = 31 2 = 32 3 = 33 4 = 34 5 = 35 A = 41 a = 61 etc

Par conséquent chaîne str = "12345"; besoin pour obtenir le converti str = "3132333435"

Répondre

7

Je pense que cela est tout ce que vous aurez besoin:

string finalValue; 
byte[] ascii = Encoding.ASCII.GetBytes(yourString); 
foreach (Byte b in ascii) 
{ 
    finalValue += b.ToString("X"); 
} 

Plus d'info sur MSDN: http://msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx

Edit: Hex:

string finalValue; 
int value; 
foreach (char c in myString) 
{ 
    value = Convert.ToInt32(c); 
    finalValue += value.ToString("X"); 
    // or finalValue = String.Format("{0}{1:X}", finalValue, value); 
} 
// use finalValue 
+1

Vous devez formater en utilisant hex. –

+0

Merci Matthew, j'ai édité pour inclure la conversion hexadécimale –

+0

Au début, je n'ai pas compris le commentaire hexadécimal, alors je l'ai réécrit. Ce matin, SO m'a dit que le commentaire était nouveau alors je regarde à nouveau, et j'ai juste oublié le modificateur de conversion dans ToString(). Donc, c'est deux façons d'obtenir ce que vous voulez. Si j'avais utilisé Convert.ToByte, le second bloc serait redondant! –

2
string.Join("", from c in "12345" select ((int)c).ToString("X")); 
+0

snazzy ... ne ressemble même plus à C#. – mpen

+0

C'est une déclaration très intéressante. Je ne pense pas que les gars de mon travail le comprennent (ils étaient coincés dans .NET 1.1 jusqu'à il y a environ 6 mois). –

1

Pour l'obtenir en une seule ligne, et plus lisible (imo)

var result = "12345".Aggregate("", (res, c) => res + ((byte)c).ToString("X")); 

cela retourne "3132333435", tout comme vous avez demandé :)

0
string s = "abc123"; 

foreach (char c in s) { 
    Response.Write((int)c + ","); 
} 
Questions connexes