Penukar Kod RFID
Penukar RFID
Tukar antara RFID Hex (SGTIN-96) dan Kod Bar GS1 (GTIN) + Nombor Siri.
EPC URIs
Logik Kod & Langkah demi Langkah
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
Kod Pemaju
Gunakan logik utiliti ini dalam projek anda. Pilih bahasa di bawah.
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}Terangkan
SGTIN-96 ialah rentetan binari 96-bit yang dibahagikan kepada 6 bahagian:
001100000x30Awalan standard (00110000) yang mengenal pasti ini sebagai SGTIN-96.
0113Jenis objek (cth. 1 = Runcit Runcit). Lihat Panduan Rujukan di bawah.
1015Sekatan 5 bermaksud: Kod Syarikat mengambil 24 bit, Kod Produk mengambil 20 bit.
1000100001010111110000118935363Kod syarikat unik yang diberikan oleh GS1.
00010111011001011101095837Kod produk khusus anda.
000000000000000000000000000000000000011Pengecam unik untuk setiap produk fizikal tertentu.
Memahami SGTIN & GTIN
Membayangkan hubungan antara kod bar fizikal anda dan kod produk elektronik (EPC).

Logik Pengekodan (Langkah demi Langkah)
- Langkah 1: Tentukan nilai pengepala binari untuk skema EPC. Nilai pengepala binari untuk SGTIN-96 ialah “00110000.”
- Langkah 2: Pilih Nilai Sekatan berdasarkan bilangan digit dalam Awalan Syarikat daripada Jadual Nilai Sekatan.
- Langkah 3: Tukar Nilai Penapis, Nilai Sekatan, Awalan Syarikat, Rujukan Item, dan # Siri kepada nilai binari.
- Langkah 4: Cantumkan mengikut urutan Pengepala, Penapis, Sekatan, Awalan Syarikat, Rujukan Item, dan nilai binari # Siri untuk membentuk EPC Binari.
Panduan Rujukan SGTIN-96
| Nilai | Penerangan |
|---|---|
| 0 | Semua Lain Digunakan untuk item yang tidak sesuai dengan kategori lain. Jarang digunakan dalam runcit am. |
| 1 | Item Perdagangan Point of Sale (POS) Unit pengguna standard yang dijual di Point of Sale. Contoh: Sebotol syampu tunggal. |
| 2 | Kes Penuh untuk Pengangkutan Unit penghantaran standard yang mengandungi berbilang item. Contoh: Sekarton 12 botol syampu. Kritikal untuk logistik untuk membezakan 'satu kes' daripada 'satu item'. |
| 3 | Tersimpan Tersimpan untuk kegunaan masa depan. |
| 4 | Pengumpulan Item Perdagangan Pek Dalaman Pengumpulan yang lebih kecil daripada kes penuh, selalunya untuk paparan rak atau pengendalian. Contoh: Pek 3-pek yang dibalut dengan pengecut di dalam karton utama. |
| 5 | Tersimpan Tersimpan untuk kegunaan masa depan. |
| 6 | Muatan Unit Unit logistik yang besar, biasanya palet yang mengandungi berbilang kes. |
| 7 | Komponen di dalam Unit Pengguna Bahagian khusus di dalam unit pengguna. Contoh: Penutup bateri di dalam mainan. |
| Nilai | Awalan Syarikat | Rujukan 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 |
Soalan Lazim SGTIN-96
- Ia memberitahu sistem tahap pembungkusan tag. Jika sistem membaca tag 'Kes' (Penapis 2), ia tahu ia mengandungi berbilang item. Ini menghalang pengiraan berganda (cth, mengira kes sebagai hanya satu unit) dan membolehkan pengesahan penghantaran yang sah.
- Kes (Penapis 2) ialah unit penghantaran utama yang digunakan untuk pengangkutan. Pek Dalam (Penapis 4) ialah subbahagian di dalam kes itu, biasanya untuk pengendalian atau paparan yang lebih mudah (seperti pek 6 di dalam kes 24 tin). Sistem logistik menjejaki Kes; Operasi kedai mungkin mengendalikan Pek Dalam dengan cekap.
- Penyahkodan akan gagal atau menghasilkan Kod Bar yang salah. Sekatan menentukan dengan tepat di mana Awalan Syarikat berakhir dan Rujukan Item bermula. Jika 'titik pemisahan' ini salah, anda akan mendapat Kod Syarikat yang berbeza daripada yang dimaksudkan.
- GTIN Standard (Kod Bar) hanya mengenal pasti jenis produk (cth, 'Soda 12oz'). SGTIN-96 menambah Nombor Siri, memberikan setiap tin identiti yang unik. Ini membolehkan kebolehkesanan peringkat item, membolehkan anda menjejaki dengan tepat item khusus yang dijual, dicuri atau tamat tempoh.
- Ya. Seperti yang ditunjukkan dalam penukar di atas, rentetan SGTIN-96 mengandungi GTIN-14 yang lengkap. Dengan mengalih keluar Nombor Siri dan maklumat pengepala, anda boleh membina semula kod bar runcit asal dengan sempurna.
- Pengepala (0x30) ialah awalan 8-bit standard yang ditakrifkan oleh GS1. Ia hanya memberitahu mana-mana pembaca RFID: "Tag ini dikodkan menggunakan standard SGTIN-96." Pengepala lain wujud untuk standard yang berbeza (seperti SSCC untuk palet atau GIAI untuk aset).