Metator de Arkalot escribió:El problema es que no se que es ese argumento 'hhl', ademas de
que en realidad me escribe tres bytes vacios (00000000) antes
de escribir el numero 1 en binario (00000001).
Por lo que se ve, el módulo struct sirve para trasladar tipos de datos
nativos de python a estructuras de C, se vé muy bueno, no lo conocía.
Ahora bien, tal vez te esté faltando como dato tener la documentación
de esté módulo: En python existe una función que te da información
sobre cualquier objeto de python, la función help.
Por ejemplo, ejecutando lo siguiente desde el intérprete interactivo
se obtiene toda la ayuda el módulo:
import struct
help(struct)
ahí veo para qué se usa el módulo, y leyendo un poco mas veo que los
parámetros "hhl" de tu función no responden a lo que quieres hacer, cada
caracter de esa cadena significa el tipo de dato destino que quieres
asignar a tus números.
Tu sentencia sería algo como:
data = struct.pack('hhl', 1, 2, 3
crear una estructura donde
1 se convierte a: short
2 se convierte a: short
3 se convierte a: long
tal vez te sirva probar con valores como "x" (int), o "X" (unsigned int).
En fin, leer la ayuda del módulo es primordial.
Metator de Arkalot escribió:Lo que estoy haciendo es un formato de fichero para comprimir
imagenes. Ya tengo el algoritmo, pero no se como editar un binario:
por ejemplo, voy a usar pygame para obtener los valores RGB de
una imagen, pixel por pixel, y quiero ir poniendo esos tres valores en
binario:
ROJO = 11111111, 00000000, 00000000
AZUL = 00000000, 00000000, 11111111
Ademas de otras cosas, pero eso es el primer paso.
Espero puedan ayudarme a entender este módulo, u otro si es necesario

Una sugerencia, tal vez te sirva usar el método "pygame.image.tostring" para
obtener todos los bytes de una imagen en formato de cadena; esto te evita
leer uno a uno cada pixel. Pero claro, todo depende de lo que te motive a
construir tu programa.
Ah, también te dejo otro dato, existe un módulo llamado cPickle que te permite
tomar cualquier estructura de memoria de python y volcarla a disco o
recuperarla desde ahí, es bastante útil.
En fin, ojalá te resulte útil mi comentario. Y disculpa si me fui un poco
del tema en cuestión...
Saludos.