Autor
|
Tema: Ayuda... Repetir funcion hasta el final del archivo (Leído 5,560 veces)
|
apexseal
Desconectado
Mensajes: 6
|
Saludos a todos!
Tengo un programa que uso para leer un archivo .bin, lo convierto a binario y cambio bits de un lado a otro. Pero es necesario que el proceso se haga cada 16 bits, en total son 8 cambios de posicion.
Necesito hacer esto cada 16 bits hasta el final del archivo:
12 al 2 15 al 4 9 al 13 5 al 10 11al 8 3 al 7 1 al 14 16 al 6
La manera que lo estoy haciendolo me da el resultado pero me tomaria una eternidad hacerlo asi
Chunk = Text1.Text Bit1 = 12 Bit2 = 16 bChar = Mid$(Chunk, Bit1, 1) Mid$(Chunk, Bit1, 1) = Mid$(Chunk, Bit2, 1) Mid$(Chunk, Bit2, 1) = bChar Text2.Text = Chunk
En otras palabras estoy haciendo esto 8 veces cada 12 bits, me muero...
Hay alguna manera de automatizar los 8 cambios cada 16 bits hasta el final?
8 bit shift cada 16 bits independientemente...
Gracias por su tiempo amigos!
|
|
« Última modificación: 10 Agosto 2012, 11:12 am por apexseal »
|
En línea
|
|
|
|
MCKSys Argentina
|
No te entendi bien: Estas intercambiando los bits de cada WORD (2 bytes) del archivo?
Esto seria para cifrar la data?
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
No entiendo bien que es lo que haces, ya que si andas con manejos de bits y eso tendrias que saber mi respuesta, pero la digo por si a caso:
Cuando lees un archivo lo haces con un bucle While Not (EOF) que significa Mientras no sea el End Of File (Final del archivo), asi cuando llegue al final del archivo saldra del bucle y hara lo que siga. Pero dentro de ese bucle solo tendras que ir aumentando el valor de esas variables que usas.
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Chunk = Text1.Text Bit1 = 12 Bit2 = 16 bChar = Mid$(Chunk, Bit1, 1) Mid$(Chunk, Bit1, 1) = Mid$(Chunk, Bit2, 1) Mid$(Chunk, Bit2, 1) = bChar Text2.Text = Chunk
Con mid$() NO vas a trabajar con bits de manera directa, necesitas usar las operaciones auxiliares de equivalencia... ya que o trabajas con bits o trabajas con bytes ambos son distintos... y me da la impresion que te refieres a bytes y no a bits... usando el array de bytes puedes hacer un cambio de bytes muy simple como este ( NO ES LO QUE PIDES O ESO CREO... ya que no se te entendió realmente la idea): '12 al 2 '15 al 4 '9 al 13 '5 al 10 '11al 8 '3 al 7 '1 al 14 '16 al 6 Const sFileName As String = "c:\alcaeda.txt" Dim ff As Integer Dim d As Long Dim array_data() As Byte ff = FreeFile() Open sFileName For Binary Access Read As ff If (LOF(ff) > 0) Then ReDim array_data(0 To LOF(ff)) Get ff, , array_data d = 0 While (d < LOF(ff)) bSwap array_data(12 + d), array_data(2 + d) bSwap array_data(15 + d), array_data(4 + d) bSwap array_data(9 + d), array_data(13 + d) bSwap array_data(5 + d), array_data(10 + d) bSwap array_data(11 + d), array_data(8 + d) bSwap array_data(3 + d), array_data(7 + d) bSwap array_data(1 + d), array_data(14 + d) bSwap array_data(16 + d), array_data(6 + d) d = (d + 8) Wend End If Close ff
La función bSwap() la encuentras aquí: Recopilacion de Funciones con operaciones Binarias.NOTA: Si vas a PROCESAR un archivo sin importarte que sea o no legible para un ser humano es mejor usar un array de bytes ya que mid$() es para strings y este ultimo tipo esta orientado para otros tipos de datos pero igual se puede ocuper pero en lo personal es menos recomendable... Dulces Lunas!¡.
|
|
« Última modificación: 11 Agosto 2012, 07:29 am por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
apexseal
Desconectado
Mensajes: 6
|
Es que no se como expresrme al 100%... A ver si me explico... tengo un file cifrado, pero para decriptarlo necesito hacer esos 8 pasos cada 16 bits osea cada 2 bytes... Leo el fichero cpmpleto y lo voy proceando cada 16 bits... En fin, necesito un loop o algo parecido que lo haga...
|
|
|
En línea
|
|
|
|
apexseal
Desconectado
Mensajes: 6
|
No te entendi bien: Estas intercambiando los bits de cada WORD (2 bytes) del archivo?
Esto seria para cifrar la data?
Si pero para descifrar...
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Mira igual y necesita correcciones.. Dim array_data() As Integer ' Como trabaja con con Word (16 bit) uso Integer en lugar de byte (8 bit) ... While (d < LOF(ff)) array_data(d) = bSwapBit(array_data(d), 12 - 1, 2 - 1) array_data(d) = bSwapBit(array_data(d), 15 - 1, 4 - 1) array_data(d) = bSwapBit(array_data(d), 9 - 1, 13 - 1) array_data(d) = bSwapBit(array_data(d), 5 - 1, 10 - 1) array_data(d) = bSwapBit(array_data(d), 11 - 1, 8 - 1) array_data(d) = bSwapBit(array_data(d), 3 - 1, 7 - 1) array_data(d) = bSwapBit(array_data(d), 1 - 1, 14 - 1) array_data(d) = bSwapBit(array_data(d), 16 - 1, 6 - 1) d = (d + 1) Wend ...
La función bSwapBit() la encuentras aquí: Recopilacion de Funciones con operaciones Binarias.Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
apexseal
Desconectado
Mensajes: 6
|
Y tengo que trabajar con bits obligatoriamente, el convertir a binario no es problema, donde me estanque es en trabajar cada word individual hasta el final... Hace mucho mucho no trabajo con vb6 y estoy perdido en esa area.
|
|
|
En línea
|
|
|
|
apexseal
Desconectado
Mensajes: 6
|
Ok voy a tratar, ya esto me da una idea mas clara...
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda..con repetir el programa o regresar al menu
Programación C/C++
|
retsam07
|
1
|
19,371
|
1 Diciembre 2012, 16:37 pm
por leosansan
|
|
|
Ayuda con scilab No repetir cadena de strings
Programación General
|
Mary_T
|
1
|
1,934
|
9 Mayo 2015, 13:38 pm
por fran800m
|
|
|
[AYUDA] Error con función cargar archivo.
Programación C/C++
|
Black cracker
|
8
|
2,852
|
3 Septiembre 2015, 15:17 pm
por someRandomCode
|
|
|
Ayuda para hacer una función que busque en un archivo - C
Programación C/C++
|
lucasxxviii
|
6
|
3,620
|
25 Junio 2016, 01:43 am
por lucasxxviii
|
|
|
[C++] repetir hasta ingresar 2 caracteres iguales
« 1 2 »
Programación C/C++
|
Merlindvd
|
13
|
6,037
|
26 Noviembre 2016, 16:18 pm
por Merlindvd
|
|