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ăFormatExceptionpeste limita luiint. FoloseșteBigInt.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.