fork download
  1. // ===++===
  2. //
  3. // OrtizOL
  4. //
  5. // ===--===
  6. /*============================================================
  7. //
  8. // Clase: ConvertidorNumeroArregloBytes.cs
  9. //
  10. // Propósito: Demostración conversión tipos por valor a
  11. // arreglos de bytes.
  12. //
  13. ============================================================*/
  14.  
  15. using System;
  16.  
  17. namespace Recetas.Ch02
  18. {
  19. internal class ConvertidorNumeroArregloBytes
  20. {
  21. ///<summary>
  22. /// Punto de entrada a la aplicación
  23. ///</summary>
  24. public static void Main()
  25. {
  26. // variable auxiliar para almcenar arreglo de bytes
  27. byte[] arregloBytes = null;
  28.  
  29. // Conversión bool -> arreglo de bytes
  30. arregloBytes = BitConverter.GetBytes(true);
  31. // Conversión arreglo de bytes -> bool
  32. bool booleano = BitConverter.ToBoolean(arregloBytes, 0);
  33. // Presentación de resultados
  34. Console.WriteLine("{0} (arreglo bytes) = {1} (booleano)", BitConverter.ToString(arregloBytes), booleano);
  35.  
  36. // Conversión entero (32 bits) -> arreglo de bytes
  37. arregloBytes = BitConverter.GetBytes(1313);
  38. // Conversión arreglo de bytes -> entero (32 bits)
  39. int entero = BitConverter.ToInt32(arregloBytes,0);
  40. // Presentación de resultados
  41. Console.WriteLine("{0} (arreglo bytes) = {1} (entero)", BitConverter.ToString(arregloBytes), entero);
  42.  
  43. // Conversión decimal -> arreglo de bytes
  44. arregloBytes = DecimalAArregloBytes(3.14159265358979M);
  45. // Conversión arreglo de bytes
  46. decimal valor = ArregloBytesADecimal(arregloBytes);
  47. // Presentación de resultados
  48. Console.WriteLine("{0} (arreglo bytes) = {1} (decimal)", BitConverter.ToString(arregloBytes), valor);
  49. }
  50.  
  51. ///<summary>
  52. /// Crea un arreglo de bytes a partir de un valor numérico de punto flotante
  53. ///<summary>
  54. ///<param name="value">Valor numérico punto flotante</param>
  55. ///<returns>Arreglo de bytes que representa el valor numérico.<returns>
  56. public static byte[] DecimalAArregloBytes(decimal valor)
  57. {
  58. using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
  59. {
  60. using (System.IO.BinaryWriter bw = new System.IO.BinaryWriter(ms))
  61. {
  62. // Escribe el valor punto flotante sobre el BinaryWriter
  63. bw.Write(valor);
  64.  
  65. return ms.ToArray();
  66. }
  67. }
  68. }
  69.  
  70. ///<summary>
  71. /// Convierte un arreglo de bytes a un valor punto flotante
  72. ///<summary>
  73. ///<param name="bytes">Arreglo de bytes</param>
  74. ///<returns>Valor punto flotante.<returns>
  75. public static decimal ArregloBytesADecimal(byte[] bytes)
  76. {
  77. using(System.IO.MemoryStream ms = new System.IO.MemoryStream(bytes))
  78. {
  79. using(System.IO.BinaryReader br = new System.IO.BinaryReader(ms))
  80. {
  81. return br.ReadDecimal();
  82. }
  83. }
  84. }
  85. }
  86. }
Success #stdin #stdout 0.04s 33968KB
stdin
Standard input is empty
stdout
01 (arreglo bytes) = True (booleano)
21-05-00-00 (arreglo bytes) = 1313 (entero)
83-24-6A-E7-B9-1D-01-00-00-00-00-00-00-00-0E-00 (arreglo bytes) = 3.14159265358979 (decimal)