Cara Konversi Buffer ke UUID String di Node.js

Metode Konversi Buffer ke UUID

Untuk mengubah objek Buffer menjadi format UUID string (format standar 8-4-4-4-12), cara paling efisien adalah menggunakan metode toString('hex') yang dikombinasikan dengan manipulasi string atau menggunakan pustaka uuid yang sudah menjadi standar industri. UUID dalam bentuk Buffer biasanya disimpan dalam 16 byte (128-bit), sehingga konversi yang tepat memerlukan penyisipan tanda hubung (hyphen) pada posisi yang benar.

Implementasi Menggunakan Library uuid

Cara paling aman dan direkomendasikan adalah menggunakan paket uuid. Library ini menangani validasi dan format secara otomatis.

const { stringify } = require('uuid');

// Contoh Buffer 16-byte
const buffer = Buffer.from('6ba7b8109dad11d180b400c04fd430c8', 'hex');

// Konversi ke string
const uuidString = stringify(buffer);
console.log(uuidString); // Output: 6ba7b810-9dad-11d1-80b4-00c04fd430c8

Implementasi Manual (Tanpa Library)

Jika Anda tidak ingin menambah dependensi, Anda dapat melakukan manipulasi string secara manual pada representasi hex dari Buffer tersebut.

function bufferToUuid(buffer) {
  const hex = buffer.toString('hex');
  return [
    hex.slice(0, 8),
    hex.slice(8, 12),
    hex.slice(12, 16),
    hex.slice(16, 20),
    hex.slice(20)
  ].join('-');
}

const buf = Buffer.from('6ba7b8109dad11d180b400c04fd430c8', 'hex');
console.log(bufferToUuid(buf));
MetodeKelebihanKekurangan
Library uuidSangat stabil, standar industriMenambah ukuran dependensi
Manual SliceTanpa dependensi, ringanPerlu validasi panjang buffer

Tips Troubleshooting

  • Validasi Panjang: Pastikan Buffer memiliki panjang tepat 16 byte sebelum konversi. Jika kurang atau lebih, format UUID akan rusak.
  • Endianness: Perhatikan urutan byte (Big-Endian vs Little-Endian) jika data berasal dari database seperti MySQL atau PostgreSQL yang mungkin menyimpan UUID dalam format biner yang berbeda.
  • Kinerja: Untuk aplikasi dengan throughput tinggi, metode manual dengan slice jauh lebih cepat daripada memanggil fungsi library eksternal.