toBuffer method

List<int> toBuffer({
  1. int? size,
  2. Endian endian = Endian.big,
})

Implementation

List<int> toBuffer({int? size, Endian endian = Endian.big}) {
  // List<int> buf = hex.decode(hexStr);
  List<int> buf = [];

  if (size != null) {
    var hexStr = this.bn!.toRadixString(16).padLeft0();
    var natlen = hexStr.length ~/ 2;
    buf = hex.decode(hexStr);

    if (natlen == size) {
      //pass
    } else if (natlen > size) {
      buf = buf.getRange(natlen - buf.length, buf.length).toList();
    } else if (natlen < size) {
      // var rbuf = List<int?>(size);
      List<int> rbuf = List.filled(size, 0);
      for (var i = 0; i < buf.length; i++) {
        rbuf[rbuf.length - 1 - i] = buf[buf.length - 1 - i];
      }
      for (var i = 0; i < size - natlen; i++) {
        rbuf[i] = 0;
      }
      buf = rbuf;
    }
    // buf = hex.decode(this.bn.toRadixString(16).padLeft(size, '0'));
    // return this.bn.toRadixString(16).padLeft(size);
  } else {
    // var hexStr = this.bn.toRadixString(16).padLeft(2, '0');
    var hexStr = this.bn!.toRadixString(16).padLeft0();
    buf = hex.decode(hexStr);
  }

  if (endian == Endian.little) {
    buf = reverseBuf(buf);
  }
  // Uint8List a;
  //    const longzero = Buffer.from([0])
  // if (Buffer.compare(buf, longzero) === 0) {
  //   return Buffer.from([])
  // }
  // return hex.decode(this.bn.toRadixString(16));
  return buf;
}