StreamHelper.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using System;
  2. using System.IO;
  3. namespace ET
  4. {
  5. public static class StreamHelper
  6. {
  7. public static void WriteToUint(this Stream stream, int offset, uint num)
  8. {
  9. if(stream == null)
  10. {
  11. return;
  12. }
  13. stream.Seek(offset, SeekOrigin.Begin);
  14. stream.WriteByte((byte)(num & 0xff));
  15. stream.WriteByte((byte)((num & 0xff00) >> 8));
  16. stream.WriteByte((byte)((num & 0xff0000) >> 16));
  17. stream.WriteByte((byte)((num & 0xff000000) >> 24));
  18. }
  19. public static void WriteToInt(this Stream stream, int offset, int num)
  20. {
  21. if (stream == null)
  22. {
  23. return;
  24. }
  25. stream.Seek(offset, SeekOrigin.Begin);
  26. stream.WriteByte((byte)(num & 0xff));
  27. stream.WriteByte((byte)((num & 0xff00) >> 8));
  28. stream.WriteByte((byte)((num & 0xff0000) >> 16));
  29. stream.WriteByte((byte)((num & 0xff000000) >> 24));
  30. }
  31. public static void WriteToByte(this Stream stream, int offset, byte num)
  32. {
  33. if (stream == null)
  34. {
  35. return;
  36. }
  37. stream.Seek(offset, SeekOrigin.Begin);
  38. stream.WriteByte(num);
  39. }
  40. public static void WriteToShort(this Stream stream, int offset, short num)
  41. {
  42. if (stream == null)
  43. {
  44. return;
  45. }
  46. stream.Seek(offset, SeekOrigin.Begin);
  47. stream.WriteByte((byte)(num & 0xff));
  48. stream.WriteByte((byte)((num & 0xff00) >> 8));
  49. }
  50. public static void WriteToUshort(this Stream stream, int offset, ushort num)
  51. {
  52. if (stream == null)
  53. {
  54. return;
  55. }
  56. stream.Seek(offset, SeekOrigin.Begin);
  57. stream.WriteByte((byte)(num & 0xff));
  58. stream.WriteByte((byte)((num & 0xff00) >> 8));
  59. }
  60. public static int ToInt32(this MemoryStream memoryStream, int offset)
  61. {
  62. if (memoryStream == null)
  63. {
  64. return 0;
  65. }
  66. return BitConverter.ToInt32(memoryStream.GetBuffer(), offset);
  67. }
  68. public static ushort ToUInt16(this MemoryStream memoryStream, int offset)
  69. {
  70. if (memoryStream == null)
  71. {
  72. return 0;
  73. }
  74. return BitConverter.ToUInt16(memoryStream.GetBuffer(), offset);
  75. }
  76. public static byte[] ReadBytes(MemoryStream memoryStream, int offset)
  77. {
  78. if (memoryStream != null && offset >= 0)
  79. {
  80. var count = memoryStream.Length - offset;
  81. if (count > 0)
  82. {
  83. var bytes = new byte[count];
  84. memoryStream.Read(bytes, 0, bytes.Length);
  85. return bytes;
  86. }
  87. }
  88. return null;
  89. }
  90. public static void WriteBytes(MemoryStream memoryStream, byte[] bytes)
  91. {
  92. if (memoryStream != null && bytes != null)
  93. {
  94. memoryStream.Write(bytes, 0, bytes.Length);
  95. }
  96. }
  97. }
  98. }