Karoshi MSX Community
05 de Julio de 2021, 08:24:25 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1] 2 3 4
  Imprimir  
Autor Tema: Conversión  (Leído 21300 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Dioniso
Visitante
« : 05 de Noviembre de 2006, 01:16:25 pm »

Hola.

Pues vengo a pedir algo ... Que no sé si es off-topic ... la herramienta sería para la entrada que intento acabar para esta MSXDev.

Quiero convertir un binario a un fichero de texto de modo que el fichero resultante indique la cantidad de ceros o unos que existen de forma consecutiva  Huh

Un ejemplo:

El fichero binario tiene, por ejemplo, los valores $ff,$ff,$ff,$fe,$00,$00,$03 lo que equivaldría a
Código:
11111111
11111111
11111111
11111110
00000000
00000000
00000011

Me gustaría que la salida fuera un fichero tal que:

db 21,22,2

Seguro que más de uno sabe por dónde van los tiros  Wink

Sabéis si existe algo así para PC? Algún alma caritativa podría hacer este programa?  Roll Eyes Me facilitaría muuuuuuuuucho la tarea.
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #1 : 05 de Noviembre de 2006, 01:54:19 pm »

Dioniso:

Si es por el bien de MSXdev'06, te hago yo el programa en C y te lo paso, ¿ok? Lo que pasa es que tengo una tarde de perros y después vuelo hasta Madrid. Te lo mandaré, con un poco de suerte, esta noche. Dame un e-mail válido o, si no, te pongo el código fuente en C aquí mismo y haces lo que buenamente puedas con él.

Eso sí: simple restricción - en ningún caso se dará que haya más de 255 ceros o unos seguidos, ¿verdad? Es que si no sí que se me complica el trabajo Smiley
En línea
Dioniso
Visitante
« Respuesta #2 : 05 de Noviembre de 2006, 02:06:48 pm »

Dioniso:

Si es por el bien de MSXdev'06, te hago yo el programa en C y te lo paso, ¿ok? Lo que pasa es que tengo una tarde de perros y después vuelo hasta Madrid. Te lo mandaré, con un poco de suerte, esta noche. Dame un e-mail válido o, si no, te pongo el código fuente en C aquí mismo y haces lo que buenamente puedas con él.

Eso sí: simple restricción - en ningún caso se dará que haya más de 255 ceros o unos seguidos, ¿verdad? Es que si no sí que se me complica el trabajo Smiley


Perfecto. La verdad es que se podría dar la posibilidad de más de 255 valores cero o uno. No puedes escribir $FF, poner el counter (que estará a 255) a cero y volver a calcular?

Otra cosa ...yo tomo el valor $ff como que el siguiente byte a leer será del mismo valor que el anterior (ya sea cero o uno). Si se diese la coincidencia de que hay exactamente 255 ceros o unos ... podrías escribir 254 en vez de 255?

Te escribo esto y sé que te estoy exigiendo mucho, pero sería la HERRAMIENTA. Si quieres me escribes por privado. Sería un programa de muchísimo uso.

Si pudieras enviarme el fichero compilado y las fuentes ... Roll Eyes La verdad es que no sé cómo compilar las fuentes (comorl!!!). Si las veo, igual podría hacer algún cambio. En su día hice algo en Delphi ... (siglo 5° a.C.)

Muchísimas gracias por adelantado. Ya pondré las fuentes del replayer en el foro.

La dirección es dioniso072 merroban yah00 punto es
« Última modificación: 05 de Noviembre de 2006, 02:33:41 pm por Dioniso » En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #3 : 05 de Noviembre de 2006, 03:46:54 pm »

Vale. Procuraré hacerlo según me has contado, pero lo que haré será que genere un fichero de texto plano indicando qué se ha encontrado, es decir:

db 200 ; 0s
db 142 ; 1s
db 255 ; 1s
db 255 ; 0s
...

Así podrás luego adaptarlo tú al formato que más te convenga cuando haya más de 255 ceros o lo que sea.
En línea
Dioniso
Visitante
« Respuesta #4 : 05 de Noviembre de 2006, 03:48:37 pm »

Perfecto, Edu!

No corras. Haz el programa cuando puedas.
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #5 : 05 de Noviembre de 2006, 06:38:06 pm »

Toda prisa es poca para MSXdev'06.

Bájate el paquetito en http://www.robsy.net/bitcount.zip

Tienes el ejecutable, las mini-instrucciones y el código fuente en C (muy chapucero).

Si tienes pegas, dímelo.

Que lo disfrutes.
En línea
Dioniso
Visitante
« Respuesta #6 : 05 de Noviembre de 2006, 07:07:15 pm »

Vaya! Eso es rapidez. Muchas gracias.

Lo he probado y funciona muy bien ... pero con un fichero binario de 512 bytes, a partir de la mitad me ha comenzado a dar valores erroneos ( con una diferencia de 3 bits, normalmente. Además hay 33 grupos de unos y ceros pero me crea 35  Huh

No he mirado tu fuente, creo que de poco serviría devido a mi escaso conocimiento de C.

Cuando tengas tiempo ... podrías echarle un ojo? Quieres que te envíe en binario que he utilizado (512bytes)?

Un saludo y gracias por tu tiempo y tu esfuerzo.
En línea
Dioniso
Visitante
« Respuesta #7 : 05 de Noviembre de 2006, 07:59:05 pm »

El bloque de 512 bytes:

Código:
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f0,$00
        .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$ff,$ff,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f0
        .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7f,$ff,$ff,$ff,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f0,$00,$00,$00,$00,$00
        .db $00,$00,$00,$00,$00,$00,$00,$07,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$f0,$00,$00,$00,$00
        .db $00,$00,$00,$00,$00,$00,$03,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$f0,$00,$00,$00,$00,$00,$00,$00,$00,$00
        .db $00,$00,$01,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$00,$00,$00,$00,$00,$00,$00,$00
        .db $00,$00,$03,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
        .db $ff,$ff,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0f,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
        .db $ff,$ff,$ff,$fe,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1f,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$80,$00
        .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7f,$ff,$ff,$ff,$ff,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe
        .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1f,$ff,$ff,$ff,$ff,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fc,$00,$00,$00,$00,$00,$00
        .db $00,$00,$00,$00,$00,$03,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$00,$00,$00,$00
        .db $00,$00,$00,$00,$00,$00,$1f,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
        .db $ff,$ff,$ff,$ff,$ff,$fc,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
        .db $00,$03,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$fe,$00,$00,$00,$00,$00,$00,$00,$00
        .db $00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
        .db $ff,$e0,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1f,$ff,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff
        .db $ff,$ff,$ff,$fe,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$ff
        .db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$00,$00,$00
        .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$ff,$ff,$ff,$ff,$ff,$ff,$ff

Debería dar:
   db 116,108, 156,93, 123,105, 159,90, 126,99, 168,87, 123,99, 171,84, 126,96, 190,84
   db 123,102, 177,92, 123,104, 177,89, 123,104, 180,89, 120,96, 56

Pero da:
   db 116,108, 156,93, 123,105, 159,90, 126,99, 168,87, 123,99, 171,84, 126,96, 174,84
   db 123,99, 171,84, 126,96, 174,84, 123,96, 177,84, 123,96, 177,81, 123



« Última modificación: 05 de Noviembre de 2006, 08:03:55 pm por Dioniso » En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #8 : 05 de Noviembre de 2006, 08:22:58 pm »

Prueba con este....

http://www.telefonica.net/web2/msxpage/others/bitparse.zip

Yo tampoco lo he probado mucho; pero espero que funcione....  Wink

Aunque he seguido el esquema propuesto por Robsy, se podría modificar fácilmente para obtener el binario empaquetado.
En línea

Doom dee doom dee doom
Dioniso
Visitante
« Respuesta #9 : 05 de Noviembre de 2006, 08:29:29 pm »

Gracias, jltursan. Me alegra que me ayudéis con este tema. Estoy programando, pero tengo el código parado por este problema (el de convertir los binarios a unos y ceros).

He probado el tuyo con el mismo binario y me da algo muy raro:

Código:
db 116; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 156; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 124; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 1; 0s
db 159; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 2; 0s
db 126; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 4; 0s
db 4; 1s
db 3; 0s
db 168; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 129; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 3; 0s
db 171; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 129; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 1; 1s
db 7; 0s
db 175; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 126; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 183; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 126; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 6; 1s
db 2; 0s
db 183; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 123; 1s
db 5; 0s
db 3; 1s
db 5; 0s
db 3; 1s
db 5; 0s
db 3; 1s
db 5; 0s
db 3; 1s
db 5; 0s
db 3; 1s
db 5; 0s
db 3; 1s
db 5; 0s
db 3; 1s
db 5; 0s
db 3; 1s
db 5; 0s
db 3; 1s
db 5; 0s
db 3; 1s
db 5; 0s
db 3; 1s
db 5; 0s
db 183; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 127; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
db 7; 1s
db 1; 0s
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #10 : 05 de Noviembre de 2006, 08:35:18 pm »

Vaya! Siento el entuerto...  Sad

Menos mal que JL me ha salido al paso y te ha dado sopitas.

En todo caso, confirma que la nueva aplicación funciona bien. En caso contrario, dime algo y veremos qué se puede hacer al respecto.

JL: gracias por sacarme las castañas del fuego  Wink
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #11 : 05 de Noviembre de 2006, 08:36:51 pm »

OOps! Ya veo que no está solucionado el tema aún.

En todo caso, mándame el fichero tal cual y probaremos con un doble paso: conversión y después generación del original para poder comparar la "bondad" del proceso. Me extraña que no estén funcionando las cosillas Sad
En línea
Dioniso
Visitante
« Respuesta #12 : 05 de Noviembre de 2006, 08:38:53 pm »

Bueno, creo que os ayudaría tener el BINARIO con el que estoy probando.

Los valores creo que deberían ser:

   db 116,108, 156,93, 123,105, 159,90, 126,99, 168,87, 123,99, 171,84, 126,96, 190,84
   db 123,102, 177,92, 123,104, 177,89, 123,104, 180,89, 120,96, 56

La imagen hexadecimal sería:



(en gris donde empieza a dar problemas el binario de Edu)
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #13 : 05 de Noviembre de 2006, 08:43:03 pm »

Me quedo con él y haré alguna prueba, Alfonso.

Ahora estaré off-line un ratillo, que tengo que embarcar en el avión.  Sad
En línea
Dioniso
Visitante
« Respuesta #14 : 05 de Noviembre de 2006, 08:47:04 pm »

Me quedo con él y haré alguna prueba, Alfonso.

Ahora estaré off-line un ratillo, que tengo que embarcar en el avión.  Sad

No te preocupes. Todavía queda tiempo. Espero que veas el problema.

Que tengas un buen vuelo.
En línea
Páginas: [1] 2 3 4
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!