algorytm.org

Code 93



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Code 93
Ocena użytkowników:***** / 1
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 21 września 2006 00:06

Code 93 został zaprojektowany jako udoskonalenie kodowania Code 39. Podobnie jak swój pierwowzór w wersji podstawowej jest w stanie przechowywac 43 znaki alfanumeryczne. Jednak w stosunku do swojego poprzednika posiada jeszcze 4 dodatkowe znaki sterujące (zaznaczone na czerwono, używame w wersji rozszerzonej). Wersja rozszerzona - Extended Code 93 jest w stanie przechowywać cały zbiór ASCII 128. Wynikowy Code 93 jest też bardziej gęsty - przez co krótszy od swojego pierwowzoru. Został on też wyposażony w dwie cyfry sumy kontrolnej "C" oraz "K". Długość kodowanego ciągu jest dowolna.

Sposób kodowaniaTabela kodowania znaków - 0 oznacza biały pasek, 1 oznacza czarny pasek. Jak widać w tabeli poniżej, każde 9 zer i jedynek tworzy 3 czarne paski. Stąd nazwa kodowania Code 9 of 3.
WartośćZnakKodowanieWartośćZnakKodowanie
0010001010024O100101100
1110100100025P100010110
2210100010026Q110110100
3310100001027R110110010
4410010100028S110101100
5510010010029T110100110
6610010001030U110010110
7710101000031V110011010
8810001001032W101101100
9910000101033X101100110
10A11010100034Y100110110
11B11010010035Z100111010
12C11010001036-100101110
13D11001010037.111010100
14E11001001038spacja111010010
15F11000101039$111001010
16G10110100040/101101110
17H10110010041+101110110
18I10110001042%110101110
19J10011010043($)100100110
20K10001101044(%)111011010
21L10101100045(/)111010110
22M10100110046(+)100110010
23N101000110-* Start/Stop101011110


    Kodowany ciąg ma następującą budowę:
  • znak początku - "*"
  • kodowany ciąg
  • suma kontrolna C
  • suma kontrolna K
  • znak końca - "*"
  • końcowa pojedyńcza kreska - 1
Znak gwiazdki "*" zarazerowany jest jako znacznik końca i początku zakodowanego ciągu i nie może występować nigdzie indziej.

Suma kontrolna C jest to suma ważona wszystkich kodowanych znaków. Wartości wag wynoszą: 1 dla ostatniego kodowanego znaku, 2 dla przedostatniego, itd... do 20. Po wadze 20 zaczynamy znów liczyć od 1. Całość dzielimy modulo 47. Wynik jest sumą kontrolną C.

Suma kontrolna K jest liczona analogicznie jak suma C, z tą różnicą, że wagi zmieniają się od 1 do 15, a ostatnim kodowanym znakiem jest suma kontrolna C.

Przykład:


Zakodujmy więc napis ALGORYTM.ORG
Najpierw znak początku - "*" 101011110
następnie "A" 110101000
"L" 101011000
"G" 101101000
"O" 100101100
"R" 110110010
"Y" 100110110
"T" 110100110
"M" 101001100
"." 111010100
"O" 100101100
"R" 110110010
"G" 101101000
Teraz suma kontrolna C: 10 * 12 + 21 * 11 + 16 * 10 + 24 * 9 + 27 * 8 + 34 * 7 + 29 * 6 + 22 * 5 + 37 * 4 + 24 * 3 + 27 * 2 + 16 * 1 = 120 + 231 + 160 + 216 + 216 + 238 + 174 + 110 + 148 + 72 + 54 + 16 = 1755 mod 47 = 16 - 101101000
Teraz suma kontrolna K: 10 * 13 + 21 * 12 + 16 * 11 + 24 * 10 + 27 * 9 + 34 * 8 + 29 * 7 + 22 * 6 + 37 * 5 + 24 * 4 + 27 * 3 + 16 * 2 + 16 * 1 = 130 + 252 + 176 + 240 + 243 + 272 + 203 + 132 + 185 + 96 + 81 + 32 + 16 = 2058 mod 47 = 37 - 111010100
znak końca - "*" 101011110
i końcowa kreska - 1

Ostateczny wynik to:
101011110110101000101011000101101000100101100110110010100110110110100110
1010011001110101001001011001101100101011010001011010001110101001010111101
co po zapisaniu wszystkiego w wersji graficznej daje nam:

Code 93


Przykład w JavaScript
Code 93

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiC#Microsoft Visual Studio 2010
.cs
.cs
***** / 0
Tomasz LubińskiC/C++Borland Builder 6
.cpp
.cpp
***** / 1
Tomasz LubińskiDelphi/PascalBorland Delphi 5
.pas
.pas
***** / 2
Tomasz LubińskiJava
.java
.java
***** / 2
Tomasz LubińskiJavaScriptFirefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+
.js
.js
***** / 0
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język
programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie

Poprawiony: 29 sierpnia 2012 18:35
Komentarze
photo
0 # GfxBro 2011-09-13 19:47
O co chodzi z tymi znakami sterującymi ($, %, /, +, ale w nawiasach) bo nie rozumiem? :(
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz