Skip to content
Zade Viggers edited this page May 23, 2024 · 11 revisions

Note

This page has been updated for jDataView 3

BigInts

Because jDataView extends JavaScript's built-in DataView class, the setBigInt64, setBigUint64, getBigInt64, and getBigUint64 methods work as you would expect.

Of course, jDataView also has corresponding writeXXX versions: writeBigInt64, and writeBigUint64.

Regular Numbers

Warning

For values larger than Number.MAX_SAFE_INTEGER, consider using the BigInt methods above.

jDataView was around before BigInts existed! At the time, there was no option but to implement Int64 methods in a bespoke way.

Now, these methods are kept as helpful utilities. Be careful though, because they'll just return regular numbers, so you will lose precision when reading very large numbers.

Reference

See writeXXX methods to understand the write variants of the set methods.

Native DataView methods

(with jDataView extensions for sequential writes)

getBigInt64(byteOffset: number | undefined, littleEndian?: boolean): bigint
setBigInt64(byteOffset: number | undefined, value: bigint, littleEndian?: boolean): void
writeBigInt64(value: bigint, littleEndian?: boolean): void

getBigUint64(byteOffset: number | undefined, littleEndian?: boolean): bigint
setBigUint64(byteOffset: number | undefined, value: bigint, littleEndian?: boolean): void
writeBigUint64(value: bigint, littleEndian?: boolean): void

jDataView's extra methods

// Get a 64 bit integer. Returns a regular Number, not a BigInt.
// For more precision, use `getBigInt64()`
getInt64(byteOffset: number | undefined, littleEndian?: boolean): number
// Sets a 64 bit integer. Takes a regular Number, not a BigInt.
// For more precision, use `setBigInt64()`
setInt64(byteOffset: number | undefined, value: number, littleEndian?: boolean): void
writeInt64(value: number, littleEndian?: boolean): void

// Get an unsigned 64 bit integer. Returns a regular Number, not a BigInt.
// For more precision, use `getBigUint64()`
getUint64(byteOffset: number | undefined, littleEndian?: boolean): number
// Sets an unsigned 64 bit integer. Takes a regular Number, not a BigInt.
// For more precision, use `setBigUint64()`
setUint64(byteOffset: number | undefined, value: number, littleEndian?: boolean): void
writeUint64(value: number, littleEndian?: boolean): void