toBytes static method

List<int> toBytes(
  1. int val, {
  2. int? length,
  3. Endian byteOrder = Endian.big,
})

Converts an integer to a byte list with the specified length and endianness.

Implementation

static List<int> toBytes(
  int val, {
  int? length,
  Endian byteOrder = Endian.big,
}) {
  length ??= bitlengthInBytes(val);
  assert(length <= 8);
  if (length > 4) {
    final int lowerPart = val & BinaryOps.mask32;
    final int upperPart = (val >> 32) & BinaryOps.mask32;

    final bytes = [
      ...toBytes(upperPart, length: length - 4),
      ...toBytes(lowerPart, length: 4),
    ];
    if (byteOrder == Endian.little) {
      return bytes.reversed.toList();
    }
    return bytes;
  }
  final List<int> byteList = List<int>.filled(length, 0);

  for (var i = 0; i < length; i++) {
    byteList[length - i - 1] = val & BinaryOps.mask8;
    val = val >> 8;
  }

  if (byteOrder == Endian.little) {
    return byteList.reversed.toList();
  }

  return byteList;
}