2010-04-24 39 views
5

Necesito convertir valores de char a hexadecimal. Refiérase a la tabla ASCII pero tengo algunos ejemplos que figuran a continuación:Necesidad de convertir cadena/char a valores de ascii

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

Por lo tanto, string str = "12345"; necesita para obtener el convertida cadena = "3132333435"

Respuesta

7

creo que esto es todo lo que necesita:

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

Más información en MSDN: http://msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx

Editar: Para 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

es necesario formatear usando hexagonal. –

+0

Gracias Matthew, he editado para incluir la conversión hexadecimal –

+0

Al principio, no entendí el comentario hexadecimal, así que lo reescribí. Esta mañana SO me dijo que el comentario era nuevo, así que volví a mirar y olvidé el modificador de conversión en ToString(). Entonces, estas son dos formas de obtener lo que quieres. Si hubiera usado Convert.ToByte, ¡el segundo bloque sería redundante! –

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

snazzy ... ya ni siquiera se ve como C#. – mpen

+0

Esa es una declaración muy interesante. No creo que los chicos de mi trabajo lo entendieran (estaban atrapados en .NET 1.1 hasta hace unos 6 meses). –

1

Para obtenerlo en una sola línea, y más legible (imo)

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

esto devuelve "3132333435", del mismo modo que ha solicitado :)

0
string s = "abc123"; 

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