Convertidor de Código RFID
Convertidor RFID
Convierte entre RFID Hex (SGTIN-96) y Código de Barras GS1 (GTIN) + Número de Serie.
EPC URIs
Lógica de Código y Paso a Paso
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
Código para Desarrolladores
Use esta lógica utilitaria en su proyecto. Seleccione un idioma abajo.
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}Explicar
SGTIN-96 es una cadena binaria de 96 bits dividida en 6 partes:
001100000x30Prefijo estándar (00110000) identificando esto como SGTIN-96.
0113Tipo de objeto (ej. 1 = Venta Minorista). Vea la Guía de Referencia abajo.
1015Partición 5 significa: Código de Empresa ocupa 24 bits, Referencia de Artículo ocupa 20 bits.
1000100001010111110000118935363Código único de empresa asignado por GS1.
00010111011001011101095837Su código de producto específico.
000000000000000000000000000000000000011Identificador único para cada producto físico específico.
Entendiendo SGTIN y GTIN
Visualizando la relación entre su código de barras físico y el código de producto electrónico (EPC).

Lógica de Codificación (Paso a Paso)
- Paso 1: Determine el valor de header binario para el esquema EPC. El valor de header binario para SGTIN-96 es "00110000".
- Paso 2: Seleccione el Valor de Partición basado en el número de dígitos en el Prefijo de Empresa de la Tabla de Valores de Partición.
- Paso 3: Convierta el Valor de Filtro, Valor de Partición, Prefijo de Empresa, Referencia de Artículo y # de Serie a valor binario.
- Paso 4: Concatene en orden Header, Filtro, Partición, Prefijo de Empresa, Referencia de Artículo y valores binarios de # de Serie para formar el EPC Binario.
Guía de Referencia SGTIN-96
| Valor | Descripción |
|---|---|
| 0 | Todos los Demás Usado para artículos que no encajan en otras categorías. Raramente usado en retail general. |
| 1 | Artículo Comercial en Punto de Venta (POS) La unidad de consumo estándar vendida en Punto de Venta. Ejemplo: Una botella individual de champú. |
| 2 | Caja Completa para Transporte Una unidad de envío estándar conteniendo múltiples artículos. Ejemplo: Un cartón de 12 botellas de champú. Crítico para logística para distinguir 'una caja' de 'un artículo'. |
| 3 | Reservado Reservado para uso futuro. |
| 4 | Agrupación de Artículo Comercial de Paquete Interior Una agrupación más pequeña que una caja completa, a menudo para exhibición en estante o manejo. Ejemplo: Un paquete de 3 envuelto en plástico dentro del cartón principal. |
| 5 | Reservado Reservado para uso futuro. |
| 6 | Carga Unitaria Una unidad logística grande, típicamente un pallet conteniendo múltiples cajas. |
| 7 | Componente dentro de Unidad de Consumo Una parte específica dentro de una unidad de consumo. Ejemplo: La tapa de batería dentro de un juguete. |
| Valor | Prefijo de Empresa | Referencia de Artículo |
|---|---|---|
| 0 | 40 Bits / 12 Dígitos | 4 Bits / 1 Dígitos |
| 1 | 37 Bits / 11 Dígitos | 7 Bits / 2 Dígitos |
| 2 | 34 Bits / 10 Dígitos | 10 Bits / 3 Dígitos |
| 3 | 30 Bits / 9 Dígitos | 14 Bits / 4 Dígitos |
| 4 | 27 Bits / 8 Dígitos | 17 Bits / 5 Dígitos |
| 5 | 24 Bits / 7 Dígitos | 20 Bits / 6 Dígitos |
| 6 | 20 Bits / 6 Dígitos | 24 Bits / 7 Dígitos |
Preguntas Frecuentes sobre SGTIN-96
- Le dice al sistema el nivel de empaque de la etiqueta. Si un sistema lee una etiqueta de 'Caja' (Filtro 2), sabe que contiene múltiples artículos. Esto previene el doble conteo (ej., contar una caja como una sola unidad) y permite verificación de envío válida.
- Caja (Filtro 2) es la unidad de envío primaria usada para transporte. Paquete Interior (Filtro 4) es una subdivisión dentro de esa caja, usualmente para manejo o exhibición más fácil (como un paquete de 6 dentro de una caja de 24 latas). Los sistemas logísticos rastrean Cajas; Las operaciones de tienda podrían manejar eficientemente Paquetes Interiores.
- La decodificación fallará o producirá el Código de Barras incorrecto. La Partición determina exactamente dónde termina el Prefijo de Empresa y dónde comienza la Referencia de Artículo. Si este 'punto de división' es incorrecto, obtendrá un Código de Empresa diferente al pretendido.
- El GTIN estándar (Código de Barras) solo identifica el tipo de producto (ej., 'Refresco de 12oz'). SGTIN-96 añade un Número de Serie, dando a cada unidad una identidad única. Esto habilita trazabilidad a nivel de artículo, permitiéndole rastrear exactamente qué artículo específico fue vendido, robado o expirado.
- Sí. Como se muestra en el convertidor de arriba, la cadena SGTIN-96 contiene el GTIN-14 completo. Al remover el Número de Serie y la información de header, puede reconstruir perfectamente el código de barras retail original.
- El Header (0x30) es un prefijo estándar de 8 bits definido por GS1. Simplemente le dice a cualquier lector RFID: "Esta etiqueta está codificada usando el estándar SGTIN-96." Existen otros headers para diferentes estándares (como SSCC para pallets o GIAI para activos).