Étape 3: Intro à fond sur comment perl stocke les informations de sortilège et de nombres entiers
Nombres hexadécimaux perl ressemblent beaucoup plus à 8 octets entiers large dans la base de données. Pendant la majeure partie du travail vous faites il ne comptera pas comme les zéros sont tronqués. Il y a une opération mais qui a besoin d’une petite modification à faire apparaître pour travailler correctement. C’est le radier sage du bit. Car cela va activer/désactiver tous les bits de l’entier ensemble et modifier la largeur du mot efficace. Cela illustre également l’inefficacité de cette méthode, mais il conserve-t-il toutes la programmation dans une langue, et avec l’assez grande quantité de mémoire disponible dans la tarte framboise il ne sera pas un problème pour les quelques octets de données vous sera peu bang pour conduire le bus I2C IO. Le programme ci-dessus montre quelques-unes des façons que vous pouvez tester les types de données. Le résultat est dans la photo d’introduction
Regardons un exemple de ce qui se passe et comment résoudre le changement de largeur de données efficace.
Si j’ai un nombre hexadécimal 0 x 01, qui ressemble à 0000_0001b pour obtenir un exemple. Maintenant disons je veux activer/désactiver tous les bits dans cette chaîne à l’aide du "~" opération et imprimer la valeur Régularisez en hexadécimal j’obtiendrais « FFFFFFFE » à la suite. Ce ne serait pas approprié pour l’usage avec les commandes I2C sur le Raspberry pi. Ceci peut être corrigé facilement cependant par son retour et à la répartition des données vous voulez donc si nous changeons la commande comme suit :
DATA_OUT = ~ impérativement & 0xFF
Maintenant ce que nous obtenons pour la sortie lorsque vous utilisez l’entrée 0 x 01 est 0xFE. Chaque bit activé/désactivé et un octet de données
pour les exemples que nous devons modifier la formule peu clair pour gérer la largeur des données
0 x 24 | 0 x 04 = 0 x 24 < définit le troisième bit, qui a déjà été fixé dans cet exemple
0 x 24 & ~ 0 x 04 * 0xFF = 0 x 20 < efface le troisième bit et tronque la largeur des données
0 x 24 ^ 0 x 04 = 0 x 20 < active/désactive le troisième bit