Engineering tools · EPC · GS1
RFID કોડ કન્વર્ટર
SGTIN-96 (RFID હેક્સ) અને બારકોડ (GTIN) + સીરીયલ નંબર વચ્ચે કન્વર્ટર ટૂલ. Zebra, Chainway, Impinj, Nextwaves જેવા સ્ટાન્ડર્ડ RFID રીડર સાથે સુસંગત. GS1 EPC ટેગ ડેટા સ્ટાન્ડર્ડ પર આધારિત.
RFID કન્વર્ટર
RFID હેક્સ (SGTIN-96) અને GS1 બારકોડ (GTIN) + સીરીયલ નંબર વચ્ચે કન્વર્ટ કરો.
Scheme:SGTIN-9696 bits / Header 0x30
EPC URIs
કોડ લોજિક અને સ્ટેપ-બાય-સ્ટેપ
// 1. Binary Conversion
src = bin(0x3076215F0C5D974000000001) // = "001100000111011000100001010111110000110001011101100101110100000000000000000000000000000000000001"
// 2. Extract Fields (Bit Slice)
header = src[0:8] "00110000" 0x30
filter = src[8:11] "011" 3
partition = src[11:14] "101" 5
// 3. Determine Partition Rule (Partition 5)
rule = PARTITIONS[5]
// Company Bits: 24, Item Bits: 20// 4. Extract Company, Item & Serial
company = src[14:38] "100010000101011111000011" 8935363
itemRef = src[38:58] "00010111011001011101" 095837
serial = src[58:96] "00000000000000000000000000000000000001" 1
ડેવલપર કોડ
તમારા પ્રોજેક્ટમાં આ ઉપયોગિતા લોજિકનો ઉપયોગ કરો. નીચે એક ભાષા પસંદ કરો.
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}સમજાવો
SGTIN-96 એ 6 ભાગોમાં વિભાજિત 96-બીટ બાઈનરી સ્ટ્રિંગ છે:
HDRFLTPRTCMP (24)ITEM (20)SERIAL (38)
હેડર (8 બીટ)Bits 0-8 (8)
001100000x30આને SGTIN-96 તરીકે ઓળખાવતું પ્રમાણભૂત પ્રીફિક્સ (00110000).
ફિલ્ટર (3 બીટ)Bits 8-11 (3)
0113ઓબ્જેક્ટનો પ્રકાર (દા.ત. 1 = રિટેલ રિટેલ). નીચે સંદર્ભ માર્ગદર્શિકા જુઓ.
પાર્ટિશન (3 બીટ)Bits 11-14 (3)
1015પાર્ટીશન 5 નો અર્થ છે: કંપની કોડ 24 બીટ્સ લે છે, પ્રોડક્ટ કોડ 20 બીટ્સ લે છે.
કંપની પ્રીફિક્સBits 14-38 (24)
1000100001010111110000118935363GS1 દ્વારા સોંપાયેલ અનન્ય કંપની કોડ.
આઇટમ રેફરન્સBits 38-58 (20)
00010111011001011101095837તમારો વિશિષ્ટ ઉત્પાદન કોડ.
સીરીયલ નંબર (38 બીટ)Bits 58-96 (38)
000000000000000000000000000000000000011દરેક વિશિષ્ટ ભૌતિક ઉત્પાદન માટે અનન્ય ઓળખકર્તા.
SGTIN અને GTIN ને સમજવું
તમારા ભૌતિક બારકોડ અને ઇલેક્ટ્રોનિક પ્રોડક્ટ કોડ (EPC) વચ્ચેના સંબંધને વિઝ્યુઅલાઈઝ કરવું.

એન્કોડિંગ લોજિક (પગલું-દર-પગલું)
- પગલું 1: EPC સ્કીમા માટે બાઈનરી હેડર મૂલ્ય નક્કી કરો. SGTIN-96 માટે બાઈનરી હેડર મૂલ્ય “00110000” છે.
- પગલું 2: પાર્ટીશન વેલ્યુ ટેબલમાંથી કંપની પ્રિફિક્સમાં અંકોની સંખ્યાના આધારે પાર્ટીશન વેલ્યુ પસંદ કરો.
- પગલું 3: ફિલ્ટર વેલ્યુ, પાર્ટીશન વેલ્યુ, કંપની પ્રિફિક્સ, આઇટમ રેફરન્સ અને સીરીયલ # ને બાઈનરી વેલ્યુમાં કન્વર્ટ કરો.
- પગલું 4: બાઈનરી EPC બનાવવા માટે હેડર, ફિલ્ટર, પાર્ટીશન, કંપની પ્રિફિક્સ, આઇટમ રેફરન્સ અને સીરીયલ # બાઈનરી મૂલ્યોને ક્રમમાં જોડો.
SGTIN-96 રેફરન્સ ગાઈડ
| મૂલ્ય | વર્ણન |
|---|---|
| 0 | અન્ય બધા એવી વસ્તુઓ માટે વપરાય છે જે અન્ય કેટેગરીમાં બંધબેસતી નથી. સામાન્ય રિટેલમાં ભાગ્યે જ વપરાય છે. |
| 1 | વેચાણનું બિંદુ (POS) વેપાર આઇટમ વેચાણના બિંદુ પર વેચવામાં આવતું પ્રમાણભૂત ગ્રાહક એકમ. ઉદાહરણ: શેમ્પૂની એક બોટલ. |
| 2 | પરિવહન માટે સંપૂર્ણ કેસ એક પ્રમાણભૂત શિપિંગ એકમ જેમાં બહુવિધ વસ્તુઓ હોય છે. ઉદાહરણ: 12 શેમ્પૂ બોટલનું એક કાર્ટન. 'એક કેસ' અને 'એક આઇટમ' ને અલગ પાડવા માટે લોજિસ્ટિક્સ માટે મહત્વપૂર્ણ. |
| 3 | અનામત ભાવિ ઉપયોગ માટે અનામત. |
| 4 | આંતરિક પેક વેપાર આઇટમ ગ્રૂપિંગ સંપૂર્ણ કેસ કરતા નાનું જૂથ, ઘણીવાર શેલ્ફ ડિસ્પ્લે અથવા હેન્ડલિંગ માટે. ઉદાહરણ: મુખ્ય કાર્ટનની અંદર એક શ્રિંક-રેપ 3-પેક. |
| 5 | અનામત ભાવિ ઉપયોગ માટે અનામત. |
| 6 | યુનિટ લોડ એક મોટું લોજિસ્ટિકલ એકમ, સામાન્ય રીતે એક પેલેટ જેમાં બહુવિધ કેસ હોય છે. |
| 7 | ગ્રાહક એકમની અંદરનો ઘટક ગ્રાહક એકમની અંદરનો એક વિશિષ્ટ ભાગ. ઉદાહરણ: રમકડાની અંદર બેટરી કવર. |
| મૂલ્ય | કંપની પ્રીફિક્સ | આઇટમ સંદર્ભ |
|---|---|---|
| 0 | 40 બિટ્સ / 12 અંકો | 4 બિટ્સ / 1 અંકો |
| 1 | 37 બિટ્સ / 11 અંકો | 7 બિટ્સ / 2 અંકો |
| 2 | 34 બિટ્સ / 10 અંકો | 10 બિટ્સ / 3 અંકો |
| 3 | 30 બિટ્સ / 9 અંકો | 14 બિટ્સ / 4 અંકો |
| 4 | 27 બિટ્સ / 8 અંકો | 17 બિટ્સ / 5 અંકો |
| 5 | 24 બિટ્સ / 7 અંકો | 20 બિટ્સ / 6 અંકો |
| 6 | 20 બિટ્સ / 6 અંકો | 24 બિટ્સ / 7 અંકો |
SGTIN-96 વારંવાર પૂછાતા પ્રશ્નો
- તે સિસ્ટમને ટૅગનું પેકેજિંગ લેવલ જણાવે છે. જો કોઈ સિસ્ટમ 'કેસ' ટૅગ (ફિલ્ટર 2) વાંચે છે, તો તે જાણે છે કે તેમાં બહુવિધ વસ્તુઓ છે. આ ડબલ-કાઉન્ટિંગને અટકાવે છે (દા.ત., કેસને ફક્ત એક જ એકમ તરીકે ગણવું) અને માન્ય શિપિંગ વેરિફિકેશનની મંજૂરી આપે છે.
- કેસ (ફિલ્ટર 2) એ પરિવહન માટે વપરાતું પ્રાથમિક શિપિંગ એકમ છે. ઇનર પેક (ફિલ્ટર 4) એ તે કેસની અંદરનું પેટાવિભાગ છે, સામાન્ય રીતે સરળ હેન્ડલિંગ અથવા ડિસ્પ્લે માટે (જેમ કે 24-કેન કેસની અંદર 6-પેક). લોજિસ્ટિક્સ સિસ્ટમ્સ કેસને ટ્રેક કરે છે; સ્ટોર ઓપરેશન્સ કાર્યક્ષમ રીતે ઇનર પેકને હેન્ડલ કરી શકે છે.
- ડિકોડિંગ નિષ્ફળ જશે અથવા ખોટો બારકોડ ઉત્પન્ન કરશે. પાર્ટિશન બરાબર નક્કી કરે છે કે કંપની પ્રીફિક્સ ક્યાં સમાપ્ત થાય છે અને આઇટમ રેફરન્સ ક્યાંથી શરૂ થાય છે. જો આ 'સ્પ્લિટ પોઇન્ટ' ખોટો છે, તો તમને ઇચ્છિત કરતાં અલગ કંપની કોડ મળશે.
- સ્ટાન્ડર્ડ GTIN (બારકોડ) ફક્ત પ્રોડક્ટનો પ્રકાર ઓળખે છે (દા.ત., '12oz સોડા'). SGTIN-96 એ સિરીયલ નંબર ઉમેરે છે, જે દરેક કેનને એક અનોખી ઓળખ આપે છે. આ આઇટમ-લેવલ ટ્રેસેબિલિટી સક્ષમ કરે છે, જે તમને બરાબર તે જ આઇટમને ટ્રેક કરવાની મંજૂરી આપે છે જે વેચાઈ, ચોરાઈ અથવા એક્સપાયર થઈ ગઈ.
- હા. ઉપરના કન્વર્ટરમાં બતાવ્યા પ્રમાણે, SGTIN-96 સ્ટ્રિંગમાં સંપૂર્ણ GTIN-14 છે. સિરીયલ નંબર અને હેડર માહિતીને દૂર કરીને, તમે મૂળ રિટેલ બારકોડને સંપૂર્ણ રીતે પુનઃનિર્માણ કરી શકો છો.
- હેડર (0x30) એ GS1 દ્વારા વ્યાખ્યાયિત એક પ્રમાણભૂત 8-બીટ પ્રીફિક્સ છે. તે ફક્ત કોઈપણ RFID રીડરને કહે છે: "આ ટૅગ SGTIN-96 સ્ટાન્ડર્ડનો ઉપયોગ કરીને એન્કોડ થયેલ છે." અન્ય સ્ટાન્ડર્ડ માટે અન્ય હેડર અસ્તિત્વમાં છે (જેમ કે પેલેટ્સ માટે SSCC અથવા એસેટ્સ માટે GIAI).