Konverter Kode RFID
Konverter RFID
Konversi antara RFID Hex (SGTIN-96) dan GS1 Barcode (GTIN) + Nomor Seri.
EPC URIs
Logika Kode & Langkah demi Langkah
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
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}Jelaskan
SGTIN-96 adalah string biner 96-bit yang dibagi menjadi 6 bagian:
001100000x30Awalan standar (00110000) yang mengidentifikasi ini sebagai SGTIN-96.
0113Jenis objek (misalnya 1 = Ritel Ritel). Lihat Panduan Referensi di bawah ini.
1015Partisi 5 berarti: Kode Perusahaan mengambil 24 bit, Kode Produk mengambil 20 bit.
1000100001010111110000118935363Kode perusahaan unik yang ditetapkan oleh GS1.
00010111011001011101095837Kode produk spesifik Anda.
000000000000000000000000000000000000011Pengidentifikasi unik untuk setiap produk fisik tertentu.
Memahami SGTIN & GTIN
Memvisualisasikan hubungan antara barcode fisik Anda dan kode produk elektronik (EPC).

Logika Pengkodean (Langkah demi Langkah)
- Langkah 1: Tentukan nilai header biner untuk skema EPC. Nilai header biner untuk SGTIN-96 adalah “00110000.”
- Langkah 2: Pilih Nilai Partisi berdasarkan jumlah digit dalam Awalan Perusahaan dari Tabel Nilai Partisi.
- Langkah 3: Konversikan Nilai Filter, Nilai Partisi, Awalan Perusahaan, Referensi Item, dan Nomor Seri ke nilai biner.
- Langkah 4: Rangkaikan secara berurutan Header, Filter, Partisi, Awalan Perusahaan, Referensi Item, dan nilai biner Nomor Seri untuk membentuk EPC Biner.
Panduan Referensi SGTIN-96
| Nilai | Deskripsi |
|---|---|
| 0 | Semua Lainnya Digunakan untuk item yang tidak sesuai dengan kategori lain. Jarang digunakan dalam ritel umum. |
| 1 | Item Perdagangan Point of Sale (POS) Unit konsumen standar yang dijual di Point of Sale. Contoh: Satu botol sampo. |
| 2 | Full Case untuk Transportasi Unit pengiriman standar yang berisi beberapa item. Contoh: Satu karton berisi 12 botol sampo. Penting untuk logistik untuk membedakan 'satu kasus' dari 'satu item'. |
| 3 | Tersedia Tersedia untuk penggunaan di masa mendatang. |
| 4 | Pengelompokan Item Perdagangan Inner Pack Pengelompokan yang lebih kecil dari satu kasus penuh, seringkali untuk tampilan rak atau penanganan. Contoh: 3-pack yang dibungkus shrink di dalam karton utama. |
| 5 | Tersedia Tersedia untuk penggunaan di masa mendatang. |
| 6 | Muat Unit Unit logistik besar, biasanya palet yang berisi beberapa kasus. |
| 7 | Komponen di dalam Unit Konsumen Bagian tertentu di dalam unit konsumen. Contoh: Penutup baterai di dalam mainan. |
| Nilai | Awalan Perusahaan | Referensi Item |
|---|---|---|
| 0 | 40 Bits / 12 Digit | 4 Bits / 1 Digit |
| 1 | 37 Bits / 11 Digit | 7 Bits / 2 Digit |
| 2 | 34 Bits / 10 Digit | 10 Bits / 3 Digit |
| 3 | 30 Bits / 9 Digit | 14 Bits / 4 Digit |
| 4 | 27 Bits / 8 Digit | 17 Bits / 5 Digit |
| 5 | 24 Bits / 7 Digit | 20 Bits / 6 Digit |
| 6 | 20 Bits / 6 Digit | 24 Bits / 7 Digit |
Pertanyaan Umum SGTIN-96
- Ini memberi tahu sistem tingkat pengemasan tag. Jika sistem membaca tag 'Case' (Filter 2), sistem tahu bahwa tag tersebut berisi beberapa item. Hal ini mencegah penghitungan ganda (misalnya, menghitung sebuah case sebagai satu unit) dan memungkinkan verifikasi pengiriman yang valid.
- Case (Filter 2) adalah unit pengiriman utama yang digunakan untuk transportasi. Inner Pack (Filter 4) adalah subdivisi di dalam case tersebut, biasanya untuk penanganan atau tampilan yang lebih mudah (seperti kemasan 6-pack di dalam case berisi 24 kaleng). Sistem logistik melacak Case; Operasi toko mungkin menangani Inner Pack secara efisien.
- Dekode akan gagal atau menghasilkan Barcode yang salah. Partisi menentukan dengan tepat di mana Awalan Perusahaan berakhir dan Referensi Item dimulai. Jika 'titik pemisah' ini salah, Anda akan mendapatkan Kode Perusahaan yang berbeda dari yang dimaksud.
- GTIN (Barcode) standar hanya mengidentifikasi jenis produk (misalnya, 'Soda 12oz'). SGTIN-96 menambahkan Nomor Seri, yang memberikan identitas unik untuk setiap kaleng. Hal ini memungkinkan traceability tingkat item, yang memungkinkan Anda melacak item spesifik mana yang dijual, dicuri, atau kedaluwarsa.
- Ya. Seperti yang ditunjukkan dalam konverter di atas, string SGTIN-96 berisi GTIN-14 lengkap. Dengan menghapus Nomor Seri dan informasi header, Anda dapat merekonstruksi barcode ritel asli dengan sempurna.
- Header (0x30) adalah awalan 8-bit standar yang ditentukan oleh GS1. Header ini hanya memberi tahu pembaca RFID: "Tag ini dikodekan menggunakan standar SGTIN-96." Header lain ada untuk standar yang berbeda (seperti SSCC untuk palet atau GIAI untuk aset).