setUint64 method

void setUint64(
  1. int offset,
  2. int value, [
  3. Endian endian = Endian.little
])

Implementation

void setUint64(int offset, int value, [Endian endian = Endian.little]) {
  if (kIsWeb) {
    // BigInt a = 33 as BigInt;

    // int l = BigInt value & 0xFFFFFFFF;
    // int h = value >> 32;

    // int h = (value % TWO_PWR_32) | 0;
    // int l = ((value / TWO_PWR_32)) | 0;
    // _dv.setInt32(offset, h, endian);
    // _dv.setInt32(offset + 4, l, endian);
    var bi = BigInt.from(value);
    var byte = BigInt.from(0xFF);

    if (endian == Endian.big) {
      _dv.setUint8(offset++, ((bi >> 56) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 48) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 40) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 32) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 24) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 16) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 8) & byte).toInt());
      _dv.setUint8(offset++, (bi & byte).toInt());
    } else {
      _dv.setUint8(offset++, ((bi) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 8) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 16) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 24) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 32) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 40) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 48) & byte).toInt());
      _dv.setUint8(offset++, ((bi >> 56) & byte).toInt());
    }
  } else {
    _dv.setUint64(offset, value, endian);
  }
}