Pretvornik RFID kode
RFID pretvornik
Pretvorite med RFID Hex (SGTIN-96) in GS1 črtno kodo (GTIN) + serijsko številko.
EPC URIs
Logika kode in korak za korakom
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
Koda razvijalca
Uporabite to logiko orodja v vašem projektu. Izberite jezik spodaj.
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}Razlaga
SGTIN-96 je 96-bitni binarni niz, razdeljen v 6 delov:
001100000x30Standardna predpona (00110000), ki identificira to kot SGTIN-96.
0113Tip objekta (npr. 1 = Retail). Glej spodnji referenčni vodnik.
1015Particija 5 pomeni: Koda podjetja zavzame 24 bitov, koda izdelka zavzame 20 bitov.
1000100001010111110000118935363Edinstvena koda podjetja, dodeljena s strani GS1.
00010111011001011101095837Vaša specifična koda izdelka.
000000000000000000000000000000000000011Edinstveni identifikator za vsak specifičen fizični izdelek.
Razumevanje SGTIN in GTIN
Vizualizacija odnosa med vašo fizično črtno kodo in elektronsko kodo izdelka (EPC).

Logika kodiranja (korak za korakom)
- Korak 1: Določite binarno vrednost glave za shemo EPC. Binarna vrednost glave za SGTIN-96 je “00110000.”
- Korak 2: Izberite vrednost particije na podlagi števila števk v predponi podjetja iz tabele vrednosti particije.
- Korak 3: Pretvorite vrednost filtra, vrednost particije, predpono podjetja, referenco artikla in serijsko številko v binarno vrednost.
- Korak 4: Zaporedno združite binarne vrednosti glave, filtra, particije, predpone podjetja, reference artikla in serijske številke, da ustvarite binarni EPC.
Vodič po SGTIN-96
| Vrednost | Opis |
|---|---|
| 0 | Vsi ostali Uporablja se za artikle, ki ne spadajo v druge kategorije. Redko se uporablja v splošni trgovini. |
| 1 | Trgovinski artikel na prodajnem mestu (POS) Standardna potrošniška enota, prodana na prodajnem mestu. Primer: Ena steklenica šampona. |
| 2 | Polna škatla za transport Standardna pošiljka, ki vsebuje več artiklov. Primer: Karton 12 šamponskih steklenic. Ključno za logistiko je razlikovanje 'enega paketa' od 'enega artikla'. |
| 3 | Rezervirano Rezervirano za prihodnjo uporabo. |
| 4 | Skupina notranjih pakirnih artiklov Skupina, manjša od celotnega paketa, pogosto za razstavljanje na polici ali rokovanje. Primer: Shrink-embalirana 3-pack znotraj glavnega kartona. |
| 5 | Rezervirano Rezervirano za prihodnjo uporabo. |
| 6 | Enota nalaganja Velika logistična enota, običajno paleta, ki vsebuje več paketov. |
| 7 | Komponenta znotraj potrošniške enote Specifičen del znotraj potrošniške enote. Primer: Pokrov baterije v igrački. |
| Vrednost | Predpona podjetja | Referenca artikla |
|---|---|---|
| 0 | 40 Biti / 12 Številke | 4 Biti / 1 Številke |
| 1 | 37 Biti / 11 Številke | 7 Biti / 2 Številke |
| 2 | 34 Biti / 10 Številke | 10 Biti / 3 Številke |
| 3 | 30 Biti / 9 Številke | 14 Biti / 4 Številke |
| 4 | 27 Biti / 8 Številke | 17 Biti / 5 Številke |
| 5 | 24 Biti / 7 Številke | 20 Biti / 6 Številke |
| 6 | 20 Biti / 6 Številke | 24 Biti / 7 Številke |
Pogosto zastavljena vprašanja o SGTIN-96
- Sistem sporoči nivo pakiranja oznake. Če sistem prebere oznako 'Case' (Filter 2), ve, da vsebuje več artiklov. To prepreči dvojno štetje (npr. štetje škatle kot enega samega enote) in omogoča veljavno preverjanje pošiljke.
- Case (Filter 2) je primarna enota pošiljanja, uporabljena za transport. Inner Pack (Filter 4) je podrazdelitev znotraj te škatle, običajno za lažje rokovanje ali prikaz (npr. 6-pack znotraj 24-can škatle). Logistični sistemi sledijo škatlam; Trgovske operacije lahko učinkovito upravljajo z notranjimi paketi.
- Dekodiranje bo spodletelo ali bo ustvarilo napačno črtno kodo. Partition določa natančno, kje se konča Predpona podjetja in začne Referenca artikla. Če je ta 'točka delitve' napačna, boste dobili drugačno kodo podjetja, kot je bilo nameravano.
- Standardni GTIN (črtna koda) identificira le vrsto izdelka (npr. '12oz Soda'). SGTIN-96 doda serijsko številko, ki vsaki pločevinki dodeli edinstveno identiteto. To omogoča sledljivost na ravni artikla, kar vam omogoča, da sledite točno, kateri posamezni izdelek je bil prodan, ukraden ali je potekel.
- Da. Kot je prikazano v pretvorniku zgoraj, niz SGTIN-96 vsebuje celoten GTIN-14. Z odstranitvijo serijske številke in informacij o glavi lahko popolnoma obnovite izvirno maloprodajno črtno kodo.
- Header (0x30) je standardni 8-bitni predpona, ki jo definira GS1. Preprosto sporoči vsakemu RFID bralniku: "Ta oznaka je kodirana po standardu SGTIN-96." Obstajajo druge glave za različne standarde (npr. SSCC za palete ali GIAI za sredstva).