hexadecimal ejemplo convertir c# string hex bitconverter

convertir - random string c# ejemplo



Convertir de hex a cadena (6)

Necesito verificar una string ubicada dentro de un paquete que recibo como matriz de byte . Si uso BitConverter.ToString() , obtengo los bytes como una string con guiones (fe: 00-50-25-40-A5-FF).
Probé la mayoría de las funciones que encontré después de una búsqueda rápida en Google, pero la mayoría de ellas tienen una string tipo de parámetro de entrada y si las llamo con la string con guiones, se produce una excepción.

Necesito una función que convierta el hex (como string o como byte ) en la string que representa el valor hexadecimal (fe: 0x31 = 1). Si el parámetro de entrada es string , la función debería reconocer guiones (ejemplo "47-61-74-65-77-61-79-65-72-76-65-72"), porque BitConverter no se convierte correctamente .


¿Al igual que?

static void Main() { byte[] data = FromHex("47-61-74-65-77-61-79-53-65-72-76-65-72"); string s = Encoding.ASCII.GetString(data); // GatewayServer } public static byte[] FromHex(string hex) { hex = hex.Replace("-", ""); byte[] raw = new byte[hex.Length / 2]; for (int i = 0; i < raw.Length; i++) { raw[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16); } return raw; }


Para soporte Unicode:

public class HexadecimalEncoding { public static string ToHexString(string str) { var sb = new StringBuilder(); var bytes = Encoding.Unicode.GetBytes(str); foreach (var t in bytes) { sb.Append(t.ToString("X2")); } return sb.ToString(); // returns: "48656C6C6F20776F726C64" for "Hello world" } public static string FromHexString(string hexString) { var bytes = new byte[hexString.Length / 2]; for (var i = 0; i < bytes.Length; i++) { bytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); } return Encoding.Unicode.GetString(bytes); // returns: "Hello world" for "48656C6C6F20776F726C64" } }


Si necesita el resultado como matriz de bytes, debe pasarlo directamente sin cambiarlo a una cadena y luego volver a cambiarlo a bytes. En su ejemplo, (fe: 0x31 = 1 ) son los códigos ASCII. En ese caso, para convertir una cadena (de valores hexadecimales) a valores ASCII use: Encoding.ASCII.GetString(byte[])

byte[] data = new byte[] { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30 }; string ascii=Encoding.ASCII.GetString(data); Console.WriteLine(ascii);

La consola mostrará: 1234567890


Su referencia a "0x31 = 1" me hace pensar que en realidad está intentando convertir valores ASCII en cadenas, en cuyo caso debería usar algo como Encoding.ASCII.GetString (Byte [])



string str = "47-61-74-65-77-61-79-53-65-72-76-65-72"; string[] parts = str.Split(''-''); foreach (string val in parts) { int x; if (int.TryParse(val, out x)) { Console.Write(string.Format("{0:x2} ", x); } } Console.WriteLine();

Puede dividir la cadena en el -
Convertir el texto a ints (int.TryParse)
Muestra el int como una cadena hexadecimal {0: x2}