BigEndianWriter.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Text;
  5. namespace Utilities
  6. {
  7. public class BigEndianWriter
  8. {
  9. public static void WriteInt16(byte[] buffer, int offset, short value)
  10. {
  11. byte[] bytes = BigEndianConverter.GetBytes(value);
  12. Array.Copy(bytes, 0, buffer, offset, bytes.Length);
  13. }
  14. public static void WriteInt16(byte[] buffer, ref int offset, short value)
  15. {
  16. WriteInt16(buffer, offset, value);
  17. offset += 2;
  18. }
  19. public static void WriteUInt16(byte[] buffer, int offset, ushort value)
  20. {
  21. byte[] bytes = BigEndianConverter.GetBytes(value);
  22. Array.Copy(bytes, 0, buffer, offset, bytes.Length);
  23. }
  24. public static void WriteUInt16(byte[] buffer, ref int offset, ushort value)
  25. {
  26. WriteUInt16(buffer, offset, value);
  27. offset += 2;
  28. }
  29. public static void WriteInt32(byte[] buffer, int offset, int value)
  30. {
  31. byte[] bytes = BigEndianConverter.GetBytes(value);
  32. Array.Copy(bytes, 0, buffer, offset, bytes.Length);
  33. }
  34. public static void WriteInt32(byte[] buffer, ref int offset, int value)
  35. {
  36. WriteInt32(buffer, offset, value);
  37. offset += 4;
  38. }
  39. public static void WriteUInt32(byte[] buffer, int offset, uint value)
  40. {
  41. byte[] bytes = BigEndianConverter.GetBytes(value);
  42. Array.Copy(bytes, 0, buffer, offset, bytes.Length);
  43. }
  44. public static void WriteUInt32(byte[] buffer, ref int offset, uint value)
  45. {
  46. WriteUInt32(buffer, offset, value);
  47. offset += 4;
  48. }
  49. public static void WriteInt64(byte[] buffer, int offset, long value)
  50. {
  51. byte[] bytes = BigEndianConverter.GetBytes(value);
  52. Array.Copy(bytes, 0, buffer, offset, bytes.Length);
  53. }
  54. public static void WriteInt64(byte[] buffer, ref int offset, long value)
  55. {
  56. WriteInt64(buffer, offset, value);
  57. offset += 8;
  58. }
  59. public static void WriteUInt64(byte[] buffer, int offset, ulong value)
  60. {
  61. byte[] bytes = BigEndianConverter.GetBytes(value);
  62. Array.Copy(bytes, 0, buffer, offset, bytes.Length);
  63. }
  64. public static void WriteUInt64(byte[] buffer, ref int offset, ulong value)
  65. {
  66. WriteUInt64(buffer, offset, value);
  67. offset += 8;
  68. }
  69. public static void WriteGuidBytes(byte[] buffer, int offset, Guid value)
  70. {
  71. byte[] bytes = BigEndianConverter.GetBytes(value);
  72. Array.Copy(bytes, 0, buffer, offset, bytes.Length);
  73. }
  74. public static void WriteGuidBytes(byte[] buffer, ref int offset, Guid value)
  75. {
  76. WriteGuidBytes(buffer, offset, value);
  77. offset += 16;
  78. }
  79. public static void WriteInt16(Stream stream, short value)
  80. {
  81. byte[] bytes = BigEndianConverter.GetBytes(value);
  82. stream.Write(bytes, 0, bytes.Length);
  83. }
  84. public static void WriteUInt16(Stream stream, ushort value)
  85. {
  86. byte[] bytes = BigEndianConverter.GetBytes(value);
  87. stream.Write(bytes, 0, bytes.Length);
  88. }
  89. public static void WriteInt32(Stream stream, int value)
  90. {
  91. byte[] bytes = BigEndianConverter.GetBytes(value);
  92. stream.Write(bytes, 0, bytes.Length);
  93. }
  94. public static void WriteUInt32(Stream stream, uint value)
  95. {
  96. byte[] bytes = BigEndianConverter.GetBytes(value);
  97. stream.Write(bytes, 0, bytes.Length);
  98. }
  99. public static void WriteInt64(Stream stream, long value)
  100. {
  101. byte[] bytes = BigEndianConverter.GetBytes(value);
  102. stream.Write(bytes, 0, bytes.Length);
  103. }
  104. public static void WriteUInt64(Stream stream, ulong value)
  105. {
  106. byte[] bytes = BigEndianConverter.GetBytes(value);
  107. stream.Write(bytes, 0, bytes.Length);
  108. }
  109. public static void WriteGuidBytes(Stream stream, Guid value)
  110. {
  111. byte[] bytes = BigEndianConverter.GetBytes(value);
  112. stream.Write(bytes, 0, bytes.Length);
  113. }
  114. }
  115. }