Étape 3: Décodage du code à barres
. < SERIAL >. < CODE >. < code >.
< SERIAL > est le numéro de série unique qui a chaque cuecat. L’idée étant que la société leur distribution permet de suivre ce que vous numérisez. Je ne vois pas un besoin pour ce faire, donc il ignorera.
< CODE > est le type de code à barres. Je n’ai pas une liste exhaustive, mais j’ai vu « E13 », "IB5" etc.. Je pense que cela peut aider à décider où chercher le code à barres, car j’imagine qu’il y a beaucoup de sources de données de codes à barres. J’imagine que les livres, produits alimentaires et vous imprimer les codes à barres peut être dans différents formats. Je sais que certains codes à barres sont des nombres seulement, certains sont un mélange de lettres et de chiffres
code à barres < > l’intéressant peu:-)
OK, alors comment décoder...
J’ai contrôlé l’internet et trouvé beaucoup de l’exemple de code dans divers format (non traitement/arduino) avec peu d’explications. Donc, j’ai attrapé une version fiable qui a bien fonctionné sur mon système Linux qui a été écrit en PERL.
Voici le script PERL étonnamment laconique par Larry Wall
http://www.Accipiter.org/download/decue.txt
Pour décrire et comprendre, je l’ai fait dans excel comme suit... le fichier est joint pour jouer avec.
1) briser le code et pénétrer dans les 2 pièces décrites ci-dessus et décrypter un à la fois comme décrit
2) chaque ensemble de 4 caractères est « clair » en 3. Donc la longueur de la sortie finale est 3/4 de la chaîne d’entrée, arrondir si nécessaire. (cryptage va à que l’inverse doit clairement touche caractères pour n’assurer aucune information est perdu)
3) prendre les 4 caractères et carte en ASCII
-effectivement "un-zA-Z0 - 9 +-" correspond aux caractères ASCII 32-96 (c’est à dire l’espace ' ' à « _ »)
-pour E, N, b, X carte à >, G,!, X respectivement
Je l’ai trouvé un problème garder conversion dans les deux sens entre les caractères ASCII et Codes (p. ex. E <> – 69) comme certains caractères non imprimables étaient difficiles à résoudre et de travailler sur le caractère non imprimable est en cours d’impression est difficile. Dans le code final j’ai donc travaillé exclusivement en codes ASCII jusqu'à la dernière étape. C’est à dire les lignes jaunes sont utiles tout en ingénierie inverse cela, mais ne font pas partie du code final...
4) soustraire 32 à partir du code ASCII
->, G,!, X a le code ASCII du 62,71,33,81
-Soustraire 32 donne nous 30,39,1,49
5) traiter les caractères ci-dessus et les ASCII codes sous forme de nombres de 6 bit (4 x 6 = 24 bits)
-30 nous donne 01110, alors
-30,39,1,49 nous donne 0 1 1 1 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1
6) traiter la chaîne binaire sous forme de chaîne de caractères 8 bits, c’est comment il devient 3/4 de la taille ! (3 x 8 = 24 bits)
-0 1 1 1 1 0 1 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 1
-122, 112 113 qui est z, p, q en format ASCII
7) prendre des 3 codes et Exclusive ou elle avec 67 = 01000011
-XOR 122 67 = 57
122 = 01111010
67 = 01000011
------------------------
00111001 = 57
-122, 112 113 devient 57,51,50
8) convertir en ASCII
-57,51,50 devient 932, qui représente les 3 premiers chiffres de mes codes à barres!!!
9) Répétez cette opération pour chaque 4 chiffres jusqu'à ce que vous obteniez un '.':-)