// ===++===
//
// 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
{
///<summary>
/// Punto de entrada a la aplicación
///</summary>
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);
}
///<summary>
/// Crea un arreglo de bytes a partir de un valor numérico de punto flotante
///<summary>
///<param name="value">Valor numérico punto flotante</param>
///<returns>Arreglo de bytes que representa el valor numérico.<returns>
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();
}
}
}
///<summary>
/// Convierte un arreglo de bytes a un valor punto flotante
///<summary>
///<param name="bytes">Arreglo de bytes</param>
///<returns>Valor punto flotante.<returns>
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();
}
}
}
}
}