Cómo convertir un array de bytes a una cadena hexadecimal y viceversa en C#?
¡Hola a todos! Soy un desarrollador principiante de C# y tengo un problema al trabajar con datos binarios. Necesito guardar un array de bytes (por ejemplo, un hash SHA256) en un archivo de texto y luego leerlo de vuelta. Entendí que no puedo simplemente escribir los bytes tal cual — se obtienen caracteres extraños. Necesito convertirlos en una cadena de caracteres hexadecimales y luego, al leer, volver a transformar esa cadena en un array de bytes.
Intenté hacerlo yo mismo, pero mi código no funciona correctamente. Esto es lo que escribí:
byte[] data = { 0x0F, 0xBA, 0x01, 0xFF };
string hex = "";
foreach (byte b in data)
{
hex += b.ToString("X");
}
// Resulta "FBA1FF" — ¡sin ceros a la izquierda!
Console.WriteLine(hex);
Cuando intento leer esta cadena de vuelta, no puedo entender dónde termina un byte y comienza otro. Por ejemplo, la cadena "FBA1FF" puede interpretarse de diferentes maneras: {0xFB, 0xA1, 0xFF} o {0x0F, 0xBA, 0x1F, 0xF} — esto es incorrecto.
He oído sobre BitConverter.ToString y StringBuilder, pero no estoy seguro de cómo usarlos correctamente. ¿Podrían ayudarme con el código correcto para convertir un array de bytes a hexadecimal y viceversa? ¡Gracias de antemano!