Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

49 linhas
1.0 KiB

  1. using System;
  2. namespace MQTTnet.Core.Serializer
  3. {
  4. public sealed 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. }