BigInt.parse în Dart

Transformă un text cu cifre, oricât de lung, într-un BigInt; acceptă și alte baze (radix) și prefixul 0x.

Sintaxă
static BigInt parse(String source, {int? radix})
static BigInt? tryParse(String source, {int? radix})

Ce face BigInt.parse

BigInt.parse('123456789012345678901234567890') citește numărul exact, fără limită de lungime. Ca la int.parse, acceptă semn (-, +), ignoră spațiile de la capete și înțelege prefixul 0x pentru hexazecimal.

Cu radix (între 2 și 36) alegi baza: BigInt.parse('ff', radix: 16) este 255. La text invalid aruncă FormatException. Varianta BigInt.tryParse returnează în schimb null. Drumul invers este toString() sau toRadixString(baza).

Parametri

Parametru Descriere
source Textul cu numărul.
radix Baza (2–36); implicit 10, sau 16 cu prefixul 0x.

Ce returnează

Un BigInt.

Exemple

Exemplul 1: Numere mari din text

void main() {
  var n = BigInt.parse('123456789012345678901234567890');
  print(n * BigInt.two);
  print(BigInt.parse('-42'));
  print(BigInt.parse('0xFFFFFFFFFFFFFFFFFF'));
  print(BigInt.parse('1010', radix: 2));
  print(BigInt.parse('255').toRadixString(16));
  print(BigInt.tryParse('12a'));
}

Rezultat

246913578024691357802469135780
-42
4722366482869645213695
10
ff
null

Exemplul 2: Verificarea unui IBAN (mod 97)

Pentru verificare, primele 4 caractere se mută la final, literele devin numere (A=10 … Z=35), iar numărul uriaș rezultat trebuie să dea restul 1 la împărțirea cu 97.

bool ibanValid(String iban) {
  var curat = iban.replaceAll(' ', '').toUpperCase();
  var mutat = curat.substring(4) + curat.substring(0, 4);
  var cifre = mutat.split('').map((c) {
    var cod = c.codeUnitAt(0);
    return cod >= 65 ? '${cod - 55}' : c;
  }).join();
  return BigInt.parse(cifre) % BigInt.from(97) == BigInt.one;
}

void main() {
  print(ibanValid('RO49 AAAA 1B31 0075 9384 0000'));
  print(ibanValid('RO49 AAAA 1B31 0075 9384 0001'));
}

Rezultat

true
false

Greșeli frecvente

  • Citești un număr foarte mare cu int.parse: aruncă FormatException peste limita lui int. Folosește BigInt.parse.

Comenzi înrudite

  • BigInt: Numere întregi oricât de mari, fără depășire; BigInt.from transformă un int, BigInt.one este valoarea 1.
  • int.parse: Transformă un text în număr întreg; parse aruncă FormatException la text greșit, tryParse returnează null.
  • BigInt.pow: Ridică un BigInt la o putere întreagă, cu rezultat exact; modPow calculează puterea modulo un număr.