decodeFixed64 function

Map<String, int> decodeFixed64(
  1. List<int> buffer,
  2. int offset
)

Decodes 8 little-endian bytes from buffer starting at offset as an unsigned 64-bit integer.

Returns a map with two entries:

  • 'value': the decoded 64-bit integer.
  • 'bytesRead': always 8.

Throws a RangeError if there are fewer than 8 bytes available starting at offset.

Implementation

Map<String, int> decodeFixed64(List<int> buffer, int offset) {
  if (offset + 8 > buffer.length) {
    throw RangeError(
      'Not enough bytes to decode fixed64 at offset $offset '
      '(need 8, have ${buffer.length - offset})',
    );
  }
  int value =
      buffer[offset] |
      (buffer[offset + 1] << 8) |
      (buffer[offset + 2] << 16) |
      (buffer[offset + 3] << 24) |
      (buffer[offset + 4] << 32) |
      (buffer[offset + 5] << 40) |
      (buffer[offset + 6] << 48) |
      (buffer[offset + 7] << 56);
  return {'value': value, 'bytesRead': 8};
}