BinaryWriterExtensions.cs 896 B

123456789101112131415161718192021222324252627282930313233
  1. using System;
  2. using System.IO;
  3. using System.Text;
  4. namespace UnityFS
  5. {
  6. public static class BinaryWriterExtensions
  7. {
  8. public static void AlignStream(this BinaryWriter writer, int alignment)
  9. {
  10. var pos = writer.BaseStream.Position;
  11. var mod = pos % alignment;
  12. if (mod != 0)
  13. {
  14. writer.Write(new byte[alignment - mod]);
  15. }
  16. }
  17. public static void WriteAlignedString(this BinaryWriter writer, string str)
  18. {
  19. var bytes = Encoding.UTF8.GetBytes(str);
  20. writer.Write(bytes.Length);
  21. writer.Write(bytes);
  22. writer.AlignStream(4);
  23. }
  24. public static void WriteNullEndString(this BinaryWriter writer, string str)
  25. {
  26. writer.Write(Encoding.UTF8.GetBytes(str));
  27. writer.Write((byte)0);
  28. }
  29. }
  30. }