StringUtils.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System;
  2. using System.Globalization;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Ryujinx.HLE.OsHle.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 ByteCount = Encoding.GetByteCount(InputString);
  13. byte[] Output = new byte[Size];
  14. if (ByteCount < Size)
  15. {
  16. Encoding.GetBytes(InputString, 0, InputString.Length, Output, Size - ByteCount);
  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),
  35. NumberStyles.HexNumber);
  36. }
  37. return Output;
  38. }
  39. }
  40. }