Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions scripts/misc/endian-converter.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/env tsx

/**
* Converts a number from big endian to little endian byte order
*/

function bigEndianToLittleEndian(num: bigint): bigint {
// Convert number to 64-bit buffer (big endian)
const buffer = Buffer.allocUnsafe(8);
buffer.writeBigUInt64BE(num);

// Read as little endian
const littleEndian = buffer.readBigUInt64LE();

return littleEndian;
}

// Main execution
const inputNumber = process.argv[2] || '360287970189639680';
const num = BigInt(inputNumber);

console.log('\nBig Endian to Little Endian Conversion\n');
console.log('='.repeat(50));

// Show original (big endian)
const beBuf = Buffer.allocUnsafe(8);
beBuf.writeBigUInt64BE(num);
console.log('\nOriginal (Big Endian):');
console.log(` Decimal: ${num}`);
console.log(` Hex: 0x${num.toString(16).padStart(16, '0')}`);
console.log(` Bytes: ${Array.from(beBuf).map(b => b.toString(16).padStart(2, '0')).join(' ')}`);

// Convert to little endian
const leBuf = Buffer.allocUnsafe(8);
leBuf.writeBigUInt64LE(num);
const littleEndianValue = leBuf.readBigUInt64BE(); // Read the LE bytes as if they were BE

console.log('\nConverted (Little Endian):');
console.log(` Decimal: ${littleEndianValue}`);
console.log(` Hex: 0x${littleEndianValue.toString(16).padStart(16, '0')}`);
console.log(` Bytes: ${Array.from(leBuf).map(b => b.toString(16).padStart(2, '0')).join(' ')}`);

console.log('\n' + '='.repeat(50) + '\n');
Loading