Convertitore di codici RFID
Convertitore RFID
Converti tra RFID Hex (SGTIN-96) e Codice a barre GS1 (GTIN) + Numero di Serie.
EPC URIs
Logica del Codice e Procedura Passo-Passo
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
Codice Sviluppatore
Utilizza questa logica di utilità nel tuo progetto. Seleziona una lingua di seguito.
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}Spiega
SGTIN-96 è una stringa binaria a 96 bit divisa in 6 parti:
001100000x30Prefisso standard (00110000) che lo identifica come SGTIN-96.
0113Tipo di oggetto (ad esempio, 1 = Dettaglio Dettaglio). Vedere la Guida di riferimento di seguito.
1015Partizione 5 significa: il codice azienda occupa 24 bit, il codice prodotto occupa 20 bit.
1000100001010111110000118935363Codice azienda univoco assegnato da GS1.
00010111011001011101095837Il codice prodotto specifico.
000000000000000000000000000000000000011Identificatore univoco per ogni singolo prodotto fisico.
Comprendere SGTIN e GTIN
Visualizzazione della relazione tra il codice a barre fisico e il codice prodotto elettronico (EPC).

Logica di codifica (Passo-passo)
- Passaggio 1: Determinare il valore dell'intestazione binaria per lo schema EPC. Il valore dell'intestazione binaria per SGTIN-96 è “00110000.”
- Passaggio 2: Selezionare il valore di partizione in base al numero di cifre nel prefisso aziendale dalla tabella dei valori di partizione.
- Passaggio 3: Convertire il valore del filtro, il valore di partizione, il prefisso aziendale, il riferimento articolo e il numero di serie in valore binario.
- Passaggio 4: Concatenare in ordine le intestazioni, il filtro, la partizione, il prefisso aziendale, il riferimento articolo e i valori binari del numero di serie per formare l'EPC binario.
Guida di riferimento SGTIN-96
| Valore | Descrizione |
|---|---|
| 0 | Tutti gli Altri Utilizzato per articoli che non rientrano in altre categorie. Raramente utilizzato nella vendita al dettaglio in generale. |
| 1 | Articolo Commerciale Punto Vendita (POS) L'unità di consumo standard venduta al Punto Vendita. Esempio: una singola bottiglia di shampoo. |
| 2 | Cassa Completa per il Trasporto Un'unità di spedizione standard contenente più articoli. Esempio: un cartone di 12 bottiglie di shampoo. Fondamentale per la logistica per distinguere 'una cassa' da 'un articolo'. |
| 3 | Riservato Riservato per uso futuro. |
| 4 | Raggruppamento Articoli Commerciali per Confezione Interna Un raggruppamento più piccolo di una cassa completa, spesso per l'esposizione sugli scaffali o la gestione. Esempio: un pacco da 3 pezzi termoretraibile all'interno del cartone principale. |
| 5 | Riservato Riservato per uso futuro. |
| 6 | Carico Unitario Una grande unità logistica, tipicamente un pallet contenente più colli. |
| 7 | Componente all'interno dell'Unità di Consumo Una parte specifica all'interno di un'unità di consumo. Esempio: il coperchio della batteria all'interno di un giocattolo. |
| Valore | Prefisso Aziendale | Riferimento Articolo |
|---|---|---|
| 0 | 40 Bit / 12 Cifre | 4 Bit / 1 Cifre |
| 1 | 37 Bit / 11 Cifre | 7 Bit / 2 Cifre |
| 2 | 34 Bit / 10 Cifre | 10 Bit / 3 Cifre |
| 3 | 30 Bit / 9 Cifre | 14 Bit / 4 Cifre |
| 4 | 27 Bit / 8 Cifre | 17 Bit / 5 Cifre |
| 5 | 24 Bit / 7 Cifre | 20 Bit / 6 Cifre |
| 6 | 20 Bit / 6 Cifre | 24 Bit / 7 Cifre |
Domande frequenti su SGTIN-96
- Indica al sistema il livello di imballaggio del tag. Se un sistema legge un tag 'Caso' (Filtro 2), sa che contiene più articoli. Ciò impedisce il conteggio doppio (ad esempio, contare un caso come una singola unità) e consente una verifica di spedizione valida.
- Caso (Filtro 2) è l'unità di spedizione principale utilizzata per il trasporto. Confezione interna (Filtro 4) è una suddivisione all'interno di quel caso, solitamente per una gestione o un'esposizione più semplice (come un pacco da 6 all'interno di un caso da 24 lattine). I sistemi logistici tracciano i Casi; le operazioni del negozio potrebbero gestire in modo efficiente le Confezioni interne.
- La decodifica fallirà o produrrà il codice a barre errato. La Partizione determina esattamente dove termina il Prefisso Aziendale e inizia il Riferimento Articolo. Se questo 'punto di divisione' è errato, otterrai un Codice Azienda diverso da quello previsto.
- Il GTIN standard (Codice a barre) identifica solo il tipo di prodotto (ad esempio, 'Soda da 12 once'). SGTIN-96 aggiunge un Numero di serie, dando a ogni singola lattina un'identità unica. Ciò consente la tracciabilità a livello di articolo, consentendoti di tenere traccia di quale articolo specifico è stato venduto, rubato o scaduto.
- Sì. Come mostrato nel convertitore sopra, la stringa SGTIN-96 contiene il GTIN-14 completo. Rimuovendo il Numero di serie e le informazioni di intestazione, puoi ricostruire perfettamente il codice a barre originale al dettaglio.
- L'intestazione (0x30) è un prefisso standard a 8 bit definito da GS1. Dice semplicemente a qualsiasi lettore RFID: "Questo tag è codificato utilizzando lo standard SGTIN-96." Esistono altre intestazioni per standard diversi (come SSCC per pallet o GIAI per asset).