Konverter Kode RFID

Alat konversi antara SGTIN-96 (RFID Hex) dan Barcode (GTIN) + Nomor Seri. Kompatibel dengan pembaca RFID standar seperti Zebra, Chainway, Impinj, Nextwaves. Berdasarkan Standar Data Tag GS1 EPC.

Konverter RFID

Logika Kode & Langkah demi Langkah

// 1. Binary Conversion

src = bin(0x) // = "?"

// 2. Extract Fields (Bit Slice)

header = src[0:8] → "00110000""?" (?)
filter = src[8:11] → "..."?
partition = src[11:14] → "..."?

// 3. Determine Partition Rule (Partition ?)

rule = PARTITIONS[?]
// Company Bits: ?, Item Bits: ?

// 4. Extract Company & Item

company = src[14:14] → "..."?
itemRef = src[14:14] → "..."?
serial = src[14:96] → "..."?

Kode Pengembang

Gunakan logika utilitas ini dalam proyek Anda. Pilih bahasa di bawah ini.

1// TypeScript / JavaScript SGTIN-96 Utils
2
3export const GS1_PARTITION_TABLE = [
4  { value: 0, partition: 0, companyPrefixBits: 40, itemReferenceBits: 4, companyDigits: 12, itemDigits: 1 },
5  { value: 1, partition: 1, companyPrefixBits: 37, itemReferenceBits: 7, companyDigits: 11, itemDigits: 2 },
6  { value: 2, partition: 2, companyPrefixBits: 34, itemReferenceBits: 10, companyDigits: 10, itemDigits: 3 },
7  { value: 3, partition: 3, companyPrefixBits: 30, itemReferenceBits: 14, companyDigits: 9, itemDigits: 4 },
8  { value: 4, partition: 4, companyPrefixBits: 27, itemReferenceBits: 17, companyDigits: 8, itemDigits: 5 },
9  { value: 5, partition: 5, companyPrefixBits: 24, itemReferenceBits: 20, companyDigits: 7, itemDigits: 6 },
10  { value: 6, partition: 6, companyPrefixBits: 20, itemReferenceBits: 24, companyDigits: 6, itemDigits: 7 },
11];
12
13export function encodeSgtin96(gtin: string, serial: string, filter: number) {
14  gtin = gtin.padStart(14, "0");
15  const p = GS1_PARTITION_TABLE.find(rule => {
16    const cp = parseInt(gtin.slice(1, 1 + rule.companyDigits));
17    const ir = parseInt(gtin[0] + gtin.slice(1 + rule.companyDigits, 13));
18    return cp < (1 << rule.companyPrefixBits) && ir < (1 << rule.itemReferenceBits);
19  });
20  if (!p) throw new Error("Invalid GTIN for SGTIN-96");
21
22  const cpVal = parseInt(gtin.slice(1, 1 + p.companyDigits));
23  const irVal = parseInt(gtin[0] + gtin.slice(1 + p.companyDigits, 13));
24  
25  let b = (0x30).toString(2).padStart(8,"0");
26  b += filter.toString(2).padStart(3,"0");
27  b += p.partition.toString(2).padStart(3,"0");
28  b += cpVal.toString(2).padStart(p.companyPrefixBits,"0");
29  b += irVal.toString(2).padStart(p.itemReferenceBits,"0");
30  b += parseInt(serial).toString(2).padStart(38,"0");
31  return binaryToHex(b);
32}
33
34export function decodeSgtin96(hex: string) {
35  const b = hexToBinary(hex);
36  const pVal = parseInt(b.substring(11, 14), 2);
37  const rule = GS1_PARTITION_TABLE.find(r => r.partition === pVal);
38  if (!rule) throw new Error("Invalid Partition");
39
40  const cp = parseInt(b.substring(14, 14 + rule.companyPrefixBits), 2);
41  const ir = parseInt(b.substring(14 + rule.companyPrefixBits, 14 + rule.companyPrefixBits + rule.itemReferenceBits), 2);
42  const serial = parseInt(b.substring(14 + rule.companyPrefixBits + rule.itemReferenceBits, 96), 2);
43
44  const cpStr = cp.toString().padStart(rule.companyDigits, "0");
45  const irStr = ir.toString().padStart(rule.itemDigits, "0");
46  const gtinCore = irStr[0] + cpStr + irStr.substring(1);
47
48  // Check digit calculation
49  let sum = 0;
50  for (let i = 0; i < 13; i++) {
51    sum += parseInt(gtinCore[i]) * (i % 2 === 0 ? 3 : 1);
52  }
53  const check = (10 - (sum % 10)) % 10;
54  
55  return {
56    gtin: gtinCore + check,
57    serial: serial.toString()
58  };
59}
60
61function binaryToHex(b: string) {
62  let hex = "";
63  for (let i = 0; i < b.length; i += 4) {
64    hex += parseInt(b.substring(i, i + 4), 2).toString(16).toUpperCase();
65  }
66  return hex;
67}
68
69function hexToBinary(h: string) {
70  let bin = "";
71  for (let i = 0; i < h.length; i++) {
72    bin += parseInt(h[i], 16).toString(2).padStart(4, "0");
73  }
74  return bin;
75}

Penjelasan

Memahami SGTIN & GTIN

Memvisualisasikan hubungan antara barcode fisik Anda dan kode produk elektronik (EPC).

Diagram yang menunjukkan hubungan antara Barcode (GTIN) dan URI SGTIN-96

SGTIN-96 adalah string biner 96-bit yang dibagi menjadi 6 bagian:

HDR
FLT
PRT
COMPANY
ITEM
SERIAL (38)

Analisis Rinci (Per Bit)

Header (8 bit)Bits 0-8 (8)
00110000

Awalan standar (00110000) yang mengidentifikasi ini sebagai SGTIN-96.

Filter (3 bit)Bits 8-11 (3)
...

Tipe objek (contoh: 1 = Ritel). Lihat Panduan Referensi di bawah.

Partisi (3 bit)Bits 11-14 (3)
...

Partisi X berarti: Kode Perusahaan mengambil Y bit, Kode Produk mengambil Z bit.

Prefiks PerusahaanBits 14-0 (0)
...

Kode perusahaan unik yang ditetapkan oleh GS1.

Referensi ItemBits 0-0 (0)
...

Kode produk spesifik Anda.

Nomor Seri (38 bit)Bits 0-96 (38)
...

Pengenal unik untuk setiap produk fisik tertentu.

Logika Penyandian (Langkah demi Langkah)

  1. Isi GTIN-13 dengan nol untuk membentuk GTIN-14.
  2. Pisahkan GTIN-14 menjadi Prefiks Perusahaan dan Referensi Item (berdasarkan Partisi).
  3. Konversi Filter, Partisi, Prefiks Perusahaan, Referensi Item, Serial ke Biner.
  4. Gabungkan semua string biner (menjadi 96 bit) dan konversi ke Hex.

Panduan Referensi SGTIN-96

FNilai Filter (3 bit)

NilaiDeskripsi
0
Lainnya
Digunakan untuk item yang tidak sesuai dengan kategori lain. Jarang digunakan dalam ritel umum.
1
Item Dagang Point of Sale (POS)
Unit konsumen standar yang dijual di Point of Sale. Contoh: Satu botol sampo.
2
Kasus Penuh untuk Transportasi
Unit pengiriman standar yang berisi banyak item. Contoh: Karton berisi 12 botol sampo. Kritis untuk logistik guna membedakan 'satu kasus' dari 'satu item'.
3
Dicadangkan
Dicadangkan untuk penggunaan masa depan.
4
Pengelompokan Item Dagang Paket Dalam
Pengelompokan yang lebih kecil dari kasus penuh, seringkali untuk tampilan rak atau penanganan. Contoh: Paket 3 bungkus shrink-wrapped di dalam karton utama.
5
Dicadangkan
Dicadangkan untuk penggunaan masa depan.
6
Unit Load
Unit logistik besar, biasanya palet yang berisi beberapa kasus.
7
Komponen di dalam Unit Konsumen
Bagian spesifik di dalam unit konsumen. Contoh: Penutup baterai di dalam mainan.

PTabel Partisi (3 bit)

Nilai
Prefiks Perusahaan
(Bit / Digit)
Referensi Item
(Bit / Digit)
040 / 124 / 1
137 / 117 / 2
234 / 1010 / 3
330 / 914 / 4
427 / 817 / 5
524 / 720 / 6
620 / 624 / 7

Pertanyaan yang Sering Diajukan tentang SGTIN-96