StringUtils.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using System.Globalization;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Ryujinx.HLE.Utilities
  6. {
  7. static class StringUtils
  8. {
  9. public static byte[] GetFixedLengthBytes(string InputString, int Size, Encoding Encoding)
  10. {
  11. InputString = InputString + "\0";
  12. int BytesCount = Encoding.GetByteCount(InputString);
  13. byte[] Output = new byte[Size];
  14. if (BytesCount < Size)
  15. {
  16. Encoding.GetBytes(InputString, 0, InputString.Length, Output, 0);
  17. }
  18. else
  19. {
  20. int NullSize = Encoding.GetByteCount("\0");
  21. Output = Encoding.GetBytes(InputString);
  22. Array.Resize(ref Output, Size - NullSize);
  23. Output = Output.Concat(Encoding.GetBytes("\0")).ToArray();
  24. }
  25. return Output;
  26. }
  27. public static byte[] HexToBytes(string HexString)
  28. {
  29. //Ignore last charactor if HexLength % 2 != 0.
  30. int BytesInHex = HexString.Length / 2;
  31. byte[] Output = new byte[BytesInHex];
  32. for (int Index = 0; Index < BytesInHex; Index++)
  33. {
  34. Output[Index] = byte.Parse(HexString.Substring(Index * 2, 2), NumberStyles.HexNumber);
  35. }
  36. return Output;
  37. }
  38. }
  39. }