base32ToBytes static method

Uint8List base32ToBytes(
  1. String base32
)

Implementation

static Uint8List base32ToBytes(String base32) {
  final alphabet = _base32Alphabet;
  final alphabetMap = {
    for (var i = 0; i < alphabet.length; i++) alphabet[i]: i,
  };

  int buffer = 0;
  int bitsLeft = 0;
  final output = BytesBuilder();

  for (final char in base32.toUpperCase().split('')) {
    if (!alphabetMap.containsKey(char)) {
      throw ArgumentError('Invalid base32 character: $char');
    }

    buffer = (buffer << 5) | alphabetMap[char]!;
    bitsLeft += 5;

    if (bitsLeft >= 8) {
      bitsLeft -= 8;
      final byte = (buffer >> bitsLeft) & 0xFF;
      output.addByte(byte);
    }
  }

  return output.toBytes();
}