Stap 3: Inleiding tot de achtergrond op hoe informatie voor hex en gehele getallen worden opgeslagen in perl
Perl hex cijfers zien er een stuk meer als gehele getallen van 8 bytes breed in de databank. Voor het grootste deel van het werk u doet het zal er niet toe als de voorloopnullen worden alle afgekapt. Er is één bewerking maar dat een beetje aanpassing moet te maken lijken goed te laten werken. Dat is de bit verstandig omkeren. Als dit zal elke bit van het gehele getal in-/ uitschakelen en de effectieve woord breedte wijzigen. Dit illustreert ook de inefficiëntie van het gebruik van deze methode, maar het houdt alle de programing in één taal, en met de vrij grote hoeveelheid geheugen die beschikbaar is in de Raspberry pie het niet een probleem voor de paar bytes aan gegevens u zal beetje bang om te rijden de IO I2C-bus. Het programma hierboven toont een aantal van de manieren waarop die je of de gegevenstypen testen kunt. Het resultaat is in de introductie-foto
Laten we een voorbeeld van wat er gebeurt en het oplossen van de effectieve data breedte verandering.
Als ik heb een hex nummer 0x01, die eruit als 0000_0001b voor een voorbeeld ziet. Nu laten we zeggen ik wil schakelen alle bits in deze tekenreeks met behulp van de "~" bewerking en afdrukken de waarde terug uit in hex krijg ik zou "FFFFFFFE" als resultaat. Dit zou niet geschikt voor gebruik met de I2C-opdrachten op de Raspberry pi. Dit kan gemakkelijk worden vastgesteld maar terugkomen en striping van uit de gegevens u zo wilt als wij de opdracht als volgt te wijzigen:
data_out = ~ data_in & 0xFF
Nu is wat we krijgen voor de uitvoer bij het gebruik van de input 0x01 0xFE. Elke bit van een knevel gevoorzid, en één byte vangegevens
de voorbeelden moeten we de duidelijke bits formule voor het beheren van de gegevensbreedte wijzigen
0x24 | 0x04 = 0x24 < stelt de derde bit, die al in het volgende voorbeeld is opgericht
0x24 & ~ 0x04 * 0xFF = 0x20 < wist de derde bit en kapt de gegevensbreedte
0x24 ^ 0x04 = 0x20 < knevels de derde bit