Volver |

Tipos de datos

Interpretación de bytes

Python ofrece un módulo struct que permite generar variables pero en array de bytes y, viceversa, puede leer un array de bytes y obtener un tipo de dato.

Por ejemplo, si queremos generar un unsigned int en un array de bytes:

from struct import *
pack("I", 192)

Esto dará como resultado:

b'\xc0\x00\x00\x00'

Este array de bytes se lo puede leer desde un programa C, sin problemas:

#include <stdint.h>
#include <stdio.h>

uint32_t convert(char c[]) {
    return *(uint32_t*) c;
}

int main(void) {
    char c[] = { 0xc0, 0x00, 0x00, 0x00, 0x12, '1', 0x00, 0x00 };

    uint32_t signal = convert(c);
    uint32_t pid = convert(&c[4]);
    printf("Signal=%u\n", signal);
    printf("PID=%u\n", pid);
}

 

Referencias:

https://docs.python.org/3/library/struct.html

En este artículo participaron: