Start · Sprachen · JavaScript · Referenz · BigInt64Array

BigInt64Array

Klasse

Typisiertes Array für 64-Bit vorzeichenbehaftete Ganzzahlen (<code>BigInt</code>), gespeichert in der nativen Byte-Reihenfolge der Plattform.

seit JavaScript ES2020 Kategorie: core

Signatur

class BigInt64Array

Beschreibung

BigInt64Array ist ein typisiertes Array (TypedArray), das ausschließlich 64-Bit vorzeichenbehaftete Ganzzahlen speichert. Jeder Eintrag belegt genau 8 Byte im Speicher. Im Gegensatz zu gewöhnlichen JavaScript-Zahlen (number) werden die Werte als BigInt gelesen und geschrieben, wodurch der gesamte 64-Bit-Bereich von −9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 präzise abgedeckt wird.

Typische Einsatzgebiete sind die Kommunikation mit nativen Bibliotheken über WebAssembly, die Verarbeitung von Binärprotokollen oder Datei­formaten, die 64-Bit-Integer verwenden, sowie hochperformante numerische Berechnungen, bei denen der 53-Bit-Bereich von Number nicht ausreicht. Die Byte-Reihenfolge (Endianness) richtet sich nach der jeweiligen Plattform; soll eine definierte Reihenfolge (z. B. für Netzwerkprotokolle) garantiert werden, bietet sich DataView an.

BigInt64Array teilt die gesamte TypedArray-API: Konstruktoren mit Länge, ArrayBuffer, anderem TypedArray oder Iterable, sowie Methoden wie map(), filter(), set(), subarray() und sort(). Zu beachten ist, dass alle Lese- und Schreiboperationen BigInt-Werte erwarten — das Übergeben gewöhnlicher number-Werte löst einen TypeError aus.

  • Elementgröße: 8 Byte pro Element (BigInt64Array.BYTES_PER_ELEMENT === 8).
  • Wertebereich: −263 bis 263−1.
  • Alle Werte müssen BigInt sein, keine implizite Konvertierung von number.

Parameter

Name Typ Default Beschreibung
$length number Anzahl der Elemente im Array. Erzeugt einen neuen, mit 0n initialisierten Puffer der Größe length × 8 Byte.
$typedArray TypedArray Ein anderes typisiertes Array, dessen Werte kopiert werden. Jeder Wert wird in BigInt konvertiert.
$object object|Iterable Ein Array-ähnliches oder iterierbares Objekt, dessen Einträge (als BigInt) in das neue Array übernommen werden.
$buffer ArrayBuffer|SharedArrayBuffer Ein bestehender Puffer, auf den das Array als Sicht (View) zeigt.
$byteOffset number 0 Byte-Offset innerhalb des buffer, ab dem die Sicht beginnt. Muss ein Vielfaches von 8 sein.
$length number Anzahl der Elemente der Sicht innerhalb des buffer (optionaler dritter Parameter bei Buffer-Konstruktion).

Rückgabewert

Typ
BigInt64Array
Beschreibung
Eine neue BigInt64Array-Instanz, die auf einen ArrayBuffer zeigt und 64-Bit-Ganzzahlen als BigInt bereitstellt.

Beispiele

Einfaches Erstellen und Befüllen

// Array mit 4 Elementen anlegen
const arr = new BigInt64Array(4);
arr[0] = 100n;
arr[1] = -9_223_372_036_854_775_808n; // Minimum
arr[2] = 9_223_372_036_854_775_807n;  // Maximum
arr[3] = 42n;

console.log(arr[0]); // 100n
console.log(arr[1]); // -9223372036854775808n
console.log(arr[2]); // 9223372036854775807n
console.log(arr.length); // 4
console.log(BigInt64Array.BYTES_PER_ELEMENT); // 8
100n -9223372036854775808n 9223372036854775807n 4 8

Aus Iterable erzeugen und map/reduce verwenden

const source = [1n, 2n, 3n, 4n, 5n];
const arr = new BigInt64Array(source);

// Alle Werte verdoppeln
const doubled = arr.map(v => v * 2n);
console.log([...doubled]); // [2n, 4n, 6n, 8n, 10n]

// Summe bilden
const sum = arr.reduce((acc, v) => acc + v, 0n);
console.log(sum); // 15n
[2n, 4n, 6n, 8n, 10n] 15n

Gemeinsamer ArrayBuffer mit DataView (definierte Byte-Reihenfolge)

// Einen Puffer für 2 × 64-Bit-Werte anlegen
const buffer = new ArrayBuffer(16);
const view = new DataView(buffer);

// Big-Endian-Schreiben mit DataView
view.setBigInt64(0, 1000n, false); // big-endian
view.setBigInt64(8, -1n,    false);

// Plattformabhängig lesen via BigInt64Array
const typed = new BigInt64Array(buffer);
console.log(typed[0]); // 1000n (auf Little-Endian-Plattform evtl. anderem Wert)
console.log(typed[1]); // -1n
1000n -1n

// Wichtig · Fallstricke

Nur BigInt-Werte: Das Zuweisen eines gewöhnlichen number (z. B. arr[0] = 5) wirft einen TypeError. Immer das n-Suffix verwenden oder explizit mit BigInt() konvertieren.

Endianness: Die Byte-Reihenfolge folgt der CPU-Architektur der Plattform (fast immer Little-Endian in modernen Desktops/Browsern). Für netzwerktaugliche oder plattformunabhängige Serialisierung sollte stattdessen DataView.setBigInt64()/getBigInt64() mit explizitem Endianness-Flag genutzt werden.

Browser-Kompatibilität: BigInt64Array ist seit Chrome 67, Firefox 68, Safari 14 und Node.js 10.3 verfügbar. Internet Explorer wird nicht unterstützt.

Kein implizites Wrapping: Bei Überschreitung des Bereichs wird nicht geworfen — stattdessen wird bitweise abgeschnitten (Modulo 264), analog zu anderen typisierten Arrays.