// ===++=== // // OrtizOL // // ===--=== /*============================================================ // // Clase: ConvertidorNumeroArregloBytes.cs // // Propósito: Demostración conversión tipos por valor a // arreglos de bytes. // ============================================================*/ using System; namespace Recetas.Ch02 { internal class ConvertidorNumeroArregloBytes { /// /// Punto de entrada a la aplicación /// public static void Main() { // variable auxiliar para almcenar arreglo de bytes byte[] arregloBytes = null; // Conversión bool -> arreglo de bytes arregloBytes = BitConverter.GetBytes(true); // Conversión arreglo de bytes -> bool bool booleano = BitConverter.ToBoolean(arregloBytes, 0); // Presentación de resultados Console.WriteLine("{0} (arreglo bytes) = {1} (booleano)", BitConverter.ToString(arregloBytes), booleano); // Conversión entero (32 bits) -> arreglo de bytes arregloBytes = BitConverter.GetBytes(1313); // Conversión arreglo de bytes -> entero (32 bits) int entero = BitConverter.ToInt32(arregloBytes,0); // Presentación de resultados Console.WriteLine("{0} (arreglo bytes) = {1} (entero)", BitConverter.ToString(arregloBytes), entero); // Conversión decimal -> arreglo de bytes arregloBytes = DecimalAArregloBytes(3.14159265358979M); // Conversión arreglo de bytes decimal valor = ArregloBytesADecimal(arregloBytes); // Presentación de resultados Console.WriteLine("{0} (arreglo bytes) = {1} (decimal)", BitConverter.ToString(arregloBytes), valor); } /// /// Crea un arreglo de bytes a partir de un valor numérico de punto flotante /// ///Valor numérico punto flotante ///Arreglo de bytes que representa el valor numérico. public static byte[] DecimalAArregloBytes(decimal valor) { using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { using (System.IO.BinaryWriter bw = new System.IO.BinaryWriter(ms)) { // Escribe el valor punto flotante sobre el BinaryWriter bw.Write(valor); return ms.ToArray(); } } } /// /// Convierte un arreglo de bytes a un valor punto flotante /// ///Arreglo de bytes ///Valor punto flotante. public static decimal ArregloBytesADecimal(byte[] bytes) { using(System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes)) { using(System.IO.BinaryReader br = new System.IO.BinaryReader(ms)) { return br.ReadDecimal(); } } } } }