Shorts.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER || UNITY_2021_2_OR_NEWER
  5. using System.Buffers.Binary;
  6. #endif
  7. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities
  8. {
  9. public static class Shorts
  10. {
  11. public const int NumBits = 16;
  12. public const int NumBytes = 2;
  13. public static short ReverseBytes(short i)
  14. {
  15. #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER || UNITY_2021_2_OR_NEWER
  16. return BinaryPrimitives.ReverseEndianness(i);
  17. #else
  18. return RotateLeft(i, 8);
  19. #endif
  20. }
  21. [CLSCompliant(false)]
  22. public static ushort ReverseBytes(ushort i)
  23. {
  24. #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER || UNITY_2021_2_OR_NEWER
  25. return BinaryPrimitives.ReverseEndianness(i);
  26. #else
  27. return RotateLeft(i, 8);
  28. #endif
  29. }
  30. public static short RotateLeft(short i, int distance)
  31. {
  32. return (short)RotateLeft((ushort)i, distance);
  33. }
  34. [CLSCompliant(false)]
  35. public static ushort RotateLeft(ushort i, int distance)
  36. {
  37. return (ushort)((i << distance) | (i >> (16 - distance)));
  38. }
  39. public static short RotateRight(short i, int distance)
  40. {
  41. return (short)RotateRight((ushort)i, distance);
  42. }
  43. [CLSCompliant(false)]
  44. public static ushort RotateRight(ushort i, int distance)
  45. {
  46. return (ushort)((i >> distance) | (i << (16 - distance)));
  47. }
  48. }
  49. }
  50. #pragma warning restore
  51. #endif