Signatur
Beschreibung
Die Methode toString() gibt die Textdarstellung eines BigInt-Werts zurück. Ohne Argument entsteht eine Dezimalzahl, zum Beispiel "12345678901234567890". Das Suffix n, das im Quelltext bei BigInt-Literalen steht, ist nicht Teil der Ausgabe.
Mit dem optionalen Parameter radix legst du die Basis des Zahlensystems fest. Erlaubt sind Werte von 2 bis 36. So lassen sich große Ganzzahlen verlustfrei als Binär-, Oktal- oder Hexadezimal-Zeichenkette ausgeben. Das ist praktisch bei Hashes, IDs, Bitmasken oder in der Kryptografie. Ziffern über 9 werden als Kleinbuchstaben a bis z dargestellt.
Negative Werte erhalten ein führendes -, und zwar in jeder Basis. Es gibt also keine Zweierkomplement-Darstellung. Präfixe wie 0x oder 0b werden nicht erzeugt. Wenn du sie brauchst, musst du sie selbst voranstellen.
JavaScript ruft toString() automatisch auf, wenn ein BigInt in einen String umgewandelt wird, etwa in Template-Literalen, bei String(big) oder bei der Verkettung mit + "".
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $radix | number | 10 | Ganzzahl zwischen 2 und 36, die die Basis des Zahlensystems für die Ausgabe angibt. |
Rückgabewert
n und ohne Präfix wie 0x.Beispiele
Grundlegende Umwandlung und verschiedene Basen
const big = 255n;
console.log(big.toString()); // Dezimal
console.log(big.toString(2)); // Binär
console.log(big.toString(16)); // Hexadezimal
console.log((-255n).toString(16)); // negativ
Große IDs verlustfrei als JSON senden
// JSON.stringify kann BigInt nicht direkt serialisieren
const order = { id: 9007199254740993n, total: 4999 };
const json = JSON.stringify(order, (key, value) =>
typeof value === 'bigint' ? value.toString() : value
);
console.log(json);
Hash als Hex-String mit Präfix und fester Länge
const toHex = (value, bytes = 8) =>
'0x' + value.toString(16).padStart(bytes * 2, '0');
const hash = 0xdeadbeefn * 12345n;
console.log(toHex(hash));
// Kompakte Kurz-ID zur Basis 36
console.log(123456789012345678901234567890n.toString(36));
Automatischer Aufruf in Template-Literalen
const factorial = (n) => (n <= 1n ? 1n : n * factorial(n - 1n));
const result = factorial(25n);
console.log(`25! = ${result}`);
console.log(String(result).length + ' Stellen');
// Wichtig · Fallstricke
- Ungültige Basis: Liegt
radixaußerhalb von 2 bis 36, wird einRangeErrorgeworfen. - Kein
n-Suffix:10n.toString()ergibt"10". Wenn du die Literal-Schreibweise brauchst, etwa für Code-Generierung, hängst du dasnselbst an. - Negative Zahlen: Die Ausgabe ist immer Vorzeichen plus Betrag, zum Beispiel
"-ff", und nie ein Zweierkomplement. Für Bitdarstellungen mit fester Breite kannst du vorherBigInt.asUintN()verwenden. - Methodenaufruf auf Literalen:
255n.toString(16)funktioniert direkt, weil dasndas Literal abschließt. Bei normalen Zahlen bräuchte man dagegen(255).toString(16). - Wird nicht als Methode von BigInt aufgerufen:
BigInt.prototype.toString.call(42)wirft einenTypeError, weilthisein BigInt sein muss. - Kompatibilität: Unterstützt in allen modernen Browsern (Chrome 67+, Firefox 68+, Safari 14+) und in Node.js ab Version 10.4. Der Internet Explorer unterstützt BigInt nicht.
- Für landesübliche Formatierung mit Tausendertrennzeichen verwendest du
toLocaleString()statttoString().