RFID Kod Dönüştürücü
RFID Dönüştürücü
RFID Hex (SGTIN-96) ile GS1 Barkod (GTIN) + Seri Numarası arasında dönüştürme yapın.
EPC URIs
Kod Mantığı ve Adım Adım
// 1. Binary Conversion
// 2. Extract Fields (Bit Slice)
// 3. Determine Partition Rule (Partition 5)
// 4. Extract Company, Item & Serial
Geliştirici Kodu
Bu yardımcı mantığı projenizde kullanın. Aşağıdan bir dil seçin.
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}Açıklayın
SGTIN-96, 6 bölümden oluşan 96 bitlik bir ikili dizedir:
001100000x30Bunun SGTIN-96 olarak tanımlanmasını sağlayan standart önek (00110000).
0113Nesne türü (örneğin, 1 = Perakende Perakende). Aşağıdaki Referans Kılavuzuna bakın.
1015Bölüm 5 şu anlama gelir: Şirket Kodu 24 bit, Ürün Kodu 20 bit alır.
1000100001010111110000118935363GS1 tarafından atanan benzersiz şirket kodu.
00010111011001011101095837Sizin özel ürün kodunuz.
000000000000000000000000000000000000011Her bir fiziksel ürün için benzersiz tanımlayıcı.
SGTIN ve GTIN'i Anlama
Fiziksel barkodunuz ve elektronik ürün kodu (EPC) arasındaki ilişkiyi görselleştirme.

Kodlama Mantığı (Adım Adım)
- Adım 1: EPC şeması için ikili başlık değerini belirleyin. SGTIN-96 için ikili başlık değeri “00110000”dır.
- Adım 2: Bölüm Değeri Tablosundan Şirket Önekinin basamak sayısına göre Bölüm Değerini seçin.
- Adım 3: Filtre Değerini, Bölüm Değerini, Şirket Önekinini, Ürün Referansını ve Seri #'yi ikili değere dönüştürün.
- Adım 4: İkili EPC'yi oluşturmak için Başlık, Filtre, Bölüm, Şirket Öneki, Ürün Referansı ve Seri # ikili değerlerini sırayla birleştirin.
SGTIN-96 Referans Kılavuzu
| Değer | Açıklama |
|---|---|
| 0 | Diğerleri Diğer kategorilere uymayan ürünler için kullanılır. Genel perakende satışta nadiren kullanılır. |
| 1 | Satış Noktası (POS) Ticari Ürünü Satış noktasında satılan standart tüketici birimi. Örnek: Tek bir şampuan şişesi. |
| 2 | Nakliye için Tam Kasa Birden fazla ürün içeren standart bir nakliye birimi. Örnek: 12 şampuan şişesinden oluşan bir karton. 'Bir kasa' ile 'bir ürün'ü ayırt etmek için lojistik açısından kritik öneme sahiptir. |
| 3 | Rezerve Edildi Gelecekteki kullanımlar için ayrılmıştır. |
| 4 | İç Paket Ticari Ürün Gruplaması Tam bir kasadan daha küçük bir gruplama, genellikle raf teşhiri veya elleçleme için. Örnek: Ana kartonun içindeki shrink ambalajlı 3'lü paket. |
| 5 | Rezerve Edildi Gelecekteki kullanımlar için ayrılmıştır. |
| 6 | Birim Yükü Tipik olarak birden fazla koli içeren, büyük bir lojistik birimi, genellikle bir palet. |
| 7 | Tüketici Birimi İçindeki Bileşen Bir tüketici biriminin içindeki belirli bir parça. Örnek: Bir oyuncağın içindeki pil kapağı. |
| Değer | Şirket Öneki | Ürün Referansı |
|---|---|---|
| 0 | 40 Bitler / 12 Basamaklar | 4 Bitler / 1 Basamaklar |
| 1 | 37 Bitler / 11 Basamaklar | 7 Bitler / 2 Basamaklar |
| 2 | 34 Bitler / 10 Basamaklar | 10 Bitler / 3 Basamaklar |
| 3 | 30 Bitler / 9 Basamaklar | 14 Bitler / 4 Basamaklar |
| 4 | 27 Bitler / 8 Basamaklar | 17 Bitler / 5 Basamaklar |
| 5 | 24 Bitler / 7 Basamaklar | 20 Bitler / 6 Basamaklar |
| 6 | 20 Bitler / 6 Basamaklar | 24 Bitler / 7 Basamaklar |
SGTIN-96 Sıkça Sorulan Sorular
- Sisteme etiketin ambalaj seviyesini bildirir. Bir sistem 'Kutu' etiketini (Filtre 2) okursa, birden fazla ürün içerdiğini bilir. Bu, çift saymayı (örneğin, bir kutuyu tek bir birim olarak saymak) önler ve geçerli nakliye doğrulamasını sağlar.
- Kutu (Filtre 2), nakliye için kullanılan birincil nakliye birimidir. İç Paket (Filtre 4), genellikle daha kolay kullanım veya sergileme için (24'lü bir kutunun içindeki 6'lı paket gibi) bu kutunun içindeki bir alt bölümdür. Lojistik sistemleri Kutuları izler; Mağaza operasyonları İç Paketleri verimli bir şekilde işleyebilir.
- Kod çözme başarısız olacak veya yanlış Barkod üretecektir. Bölüm, Şirket Önekinin tam olarak nerede bittiğini ve Ürün Referansının nerede başladığını belirler. Bu 'bölünme noktası' yanlışsa, amaçlanandan farklı bir Şirket Kodu elde edersiniz.
- Standart GTIN (Barkod) yalnızca ürün türünü (örneğin, '12oz Soda') tanımlar. SGTIN-96 bir Seri Numarası ekleyerek, her bir kutuya benzersiz bir kimlik kazandırır. Bu, ürün düzeyinde izlenebilirliği sağlar ve tam olarak hangi özel ürünün satıldığını, çalındığını veya süresinin dolduğunu izlemenizi sağlar.
- Evet. Yukarıdaki dönüştürücüde gösterildiği gibi, SGTIN-96 dizisi, eksiksiz GTIN-14'ü içerir. Seri Numarasını ve başlık bilgilerini kaldırarak, orijinal perakende barkodunu mükemmel bir şekilde yeniden oluşturabilirsiniz.
- Başlık (0x30), GS1 tarafından tanımlanan standart bir 8 bitlik önektir. Herhangi bir RFID okuyucusuna şunu söyler: "Bu etiket SGTIN-96 standardı kullanılarak kodlanmıştır." Farklı standartlar için (paletler için SSCC veya varlıklar için GIAI gibi) başka başlıklar da mevcuttur.