IntReader.cs 1022 B

1234567891011121314151617181920212223242526
  1. namespace System.Net.ApiService.Compression.Brotli {
  2. /// <summary>Byte-to-int conversion magic.</summary>
  3. internal sealed class IntReader {
  4. private byte[] byteBuffer;
  5. private int[] intBuffer;
  6. internal static void Init(System.Net.ApiService.Compression.Brotli.IntReader ir, byte[] byteBuffer, int[] intBuffer) {
  7. ir.byteBuffer = byteBuffer;
  8. ir.intBuffer = intBuffer;
  9. }
  10. /// <summary>Translates bytes to ints.</summary>
  11. /// <remarks>
  12. /// Translates bytes to ints.
  13. /// NB: intLen == 4 * byteSize!
  14. /// NB: intLen should be less or equal to intBuffer length.
  15. /// </remarks>
  16. internal static void Convert(System.Net.ApiService.Compression.Brotli.IntReader ir, int intLen) {
  17. for (int i = 0; i < intLen; ++i) {
  18. ir.intBuffer[i] = ((ir.byteBuffer[i * 4] & unchecked((int)(0xFF)))) | ((ir.byteBuffer[(i * 4) + 1] & unchecked((int)(0xFF))) << 8) | ((ir.byteBuffer[(i * 4) + 2] & unchecked((int)(0xFF))) << 16) | ((ir.byteBuffer[(i * 4) + 3] & unchecked((int
  19. )(0xFF))) << 24);
  20. }
  21. }
  22. }
  23. }