pushInteger function

List<int> pushInteger(
  1. int integer
)

Implementation

List<int> pushInteger(int integer) {
  if (integer < 0) {
    throw ArgumentError('Integer is currently required to be positive.');
  }

  /// Calculate the number of bytes required to represent the integer
  int numberOfBytes = (integer.bitLength + 7) ~/ 8;

  /// Convert to little-endian bytes
  List<int> integerBytes = List<int>.filled(numberOfBytes, 0);
  for (int i = 0; i < numberOfBytes; i++) {
    integerBytes[i] = (integer >> (i * 8)) & mask8;
  }

  /// If the last bit is set, add a sign byte to signify a positive integer
  if ((integer & (1 << (numberOfBytes * 8 - 1))) != 0) {
    integerBytes = List<int>.from([...integerBytes, 0x00]);
  }

  return List<int>.from(opPushData(BytesUtils.toHexString(integerBytes)));
}