Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

ByteReader.cs 1020 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System;
  2. namespace MQTTnet.Serializer
  3. {
  4. public class ByteReader
  5. {
  6. private readonly int _source;
  7. private int _index;
  8. public ByteReader(int source)
  9. {
  10. _source = source;
  11. }
  12. public bool Read()
  13. {
  14. if (_index >= 8)
  15. {
  16. throw new InvalidOperationException("End of byte reached.");
  17. }
  18. var result = ((1 << _index) & _source) > 0;
  19. _index++;
  20. return result;
  21. }
  22. public int Read(int count)
  23. {
  24. if (_index + count > 8)
  25. {
  26. throw new InvalidOperationException("End of byte will be reached.");
  27. }
  28. var result = 0;
  29. for (var i = 0; i < count; i++)
  30. {
  31. if (((1 << _index) & _source) > 0)
  32. {
  33. result |= 1 << i;
  34. }
  35. _index++;
  36. }
  37. return result;
  38. }
  39. }
  40. }