Paso 3: Introducción a fondo en cómo perl almacena información para hex y enteros
Números hexagonales Perl parecen mucho más enteros amplia de 8 bytes en la base de datos. Para la mayoría del trabajo lo haces no importa como se truncan los ceros. Hay una operación pero necesita una pequeña modificación para que aparezca para que funcione correctamente. Es la poco sabia invertir. Ya que activar cada bit del entero entero y cambiar el ancho eficaz de la palabra. Esto también demuestra la ineficiencia de la utilización de este método, pero lo mantienes toda la programación en un idioma y con la gran cantidad de memoria disponible en la tarta de frambuesa no será un problema para los pocos bytes de datos que se mordió bang para conducir el bus I2C IO. El programa anterior muestra algunas de las maneras que usted puede probar los tipos de datos. El resultado es la fotografía de la introducción
Veamos un ejemplo de lo que sucede y cómo resolver el cambio en la anchura efectiva de datos.
Si tengo un número hexadecimal 0 x 01, que parece 0000_0001b por un ejemplo. Ahora digo que quiero cambiar todos los bits en esta cadena usando el "~" operación e imprima el valor retroceda en hexadecimal que llegaría "FFFFFFFE" como resultado. Esto no sería conveniente para usar con los comandos I2C de la frambuesa pi. Esto puede ser fijado fácilmente sin embargo por volver y rayas de los datos desea que si cambiamos el comando como sigue:
mapeado = ~ data_in & 0xFF
Ahora lo que obtenemos para la salida cuando se utiliza la entrada 0 x 01 es 0xFE. Cada bit que se activa y un byte de datos
para los ejemplos tenemos que modificar la fórmula poco claro para manejar la anchura de los datos
0x24 | 0 x 04 = 0x24 < establece el tercer bit, ya creado en este ejemplo
0x24 & ~ 0 x 04 * 0xFF = 0 x 20 < borra el bit tercero y trunca la anchura de los datos
0x24 ^ 0 x 0 x 04 = 20 < cambia el tercer bit