elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Mensajes
Páginas: [1] 2 3 4 5
1  Programación / Programación C/C++ / Re: Ayuda con archivo binario, por favor. en: 24 Abril 2011, 15:45
Pues tengo novedades.

Desde que me dijiste lo de litte-endian, le e estado dando vueltas, ya que yo quiero usar el programa en cualquier pc, la idea de invertir los bytes, creo que no era buena, ya que en un pc big-endian, tambien invertiria los bytes y entonces seguiria estando mal.
He buscado la forma de invertir los datos recogidos, pero solo si el pc, es little, y creo que con esto lo e conseguido.

Código
  1. data = ((i&0xff)<<24)+((i&0xff00)<<8)+((i&0xff0000)>>8)+((i>>24)&0xff);
  2. fwrite( (unsigned char*) &data, 1, sizeof(data), fd);




Solo me faltaria confirmar, que en un pc big-endian, funcionaria bien.

Pero como los problemas nunca vienen solos, pues lo que te comente del codigo para invertir los bytes, osea que se comia bytes, me referia al archivo y no a la salida de consola, el resultado que con este proceso, tambien me cambia algunos bytes.




Como ves, el archivo sacado com el programa que te comente y el sacado com mi programa, esto creo que va a ser mas dificil de solucionar, xd.

Perdonar por tantas imagenes, pero siempre e creido, que mas vale una imagen que mil palabras.
2  Programación / Programación C/C++ / Re: Ayuda con archivo binario, por favor. en: 22 Abril 2011, 21:19
Pues no soy capaz de conseguirlo, esto me esta volviendo loco, :P , si cambio la opcion de leer en vez de 4 a 1, que por cierto creo que sera esto.

Código
  1. if ( addr & 0x2 )  data = (data>>16)&0xffff ;
  2.  else               data = (data&0x0000ffff) ;

Como el programa, necesita activar el chip, para escritura o lectura, y supongo que por eso lee de 4 en 4, pues se queda parado hay, y ya no sigue, xd.

Poniendo la funcion que me as pasado, funciona casi bien, creo que al invertirlos tan rapido, se come bastantes bytes, sobre todo ceros.

Si hubiera una forma de escribir en el archivo, de 4 en 4, modificando esto.

Código
  1. fwrite( (unsigned char*) &data, 1, sizeof(data), fd);

Si no, yo ya no se que mas hacer, esto me a ganado ,xd.
3  Programación / Programación C/C++ / Re: Ayuda con archivo binario, por favor. en: 22 Abril 2011, 12:54


Lo de leerlos de 4 en 4 o de 1 en 1 solo debería de tener importancia al mostrarlos por pantalla, en el archivo se van a guardar igual porque no modificas lo que recibes, solo afecta a la forma de interpretar el numero.(Lectura)



Si esto fuera como dices, seria la mejor solucion, a ver si soy capaz de modificar el codigo que tengo en C, para que lea de 1 en 1, y si no entonces añadirle este que me pones, ya contare resultados, gracias amigo.
4  Programación / Programación C/C++ / Re: Ayuda con archivo binario, por favor. en: 22 Abril 2011, 09:52
lee y escribe de a bytes y no de a 4 bytes, con eso te aseguras copiar el contenido exactamente igual.

S2


Si eso seria una solucion, que seguro funcionaria, pero uno de los chip=micros, que tengo que leer, tiene 8 megas y leyendo de 4 en 4, tarda sobre 50 minutos, osea que al leer de byte en byte, pues seria un aburrimiento, xd.

Llevo dos semanas, con esta tonteria parado, a ver si alguien pudiera explicarme como hacer lo que yo e puesto  en visual, pero para C, ya que creo que con eso solucionaria el problema.
5  Programación / Programación C/C++ / Re: Ayuda con archivo binario, por favor. en: 21 Abril 2011, 19:09
Que va, eso no creo que lo haga el programa, y si hace lo que tu dices, al leer el chip, porque ese programa tambien lee, creaira el archivo igual que mi programa, entiendes?

Habria alguna forma de invertir los bytes a la hora de escribirlos en el archivo?, osea  si leo 00112233, escribirlo igual en el archivo, hacer una espera o algo, para que no escriba 33221100, me explico, o que escriba de 4 en 4 bytes.

El archivo, tiene que quedar como el que te e puesto arriba y como sale por consola, que por cierto, alomejor se podria hacer algo para que me irviertiera los bytes antes de escribirlos en el archivo, no?, alomejor es mas facil eso.

Edito para poner esto.

Me acobo de hacer esta funcion en visual basic, que es de lo que yo se, pero como veras muy poquito claro, mira.
Código
  1.  
  2. Dim a As String
  3. Dim b As String
  4. Dim c As String
  5. Dim d As String
  6. Dim data As String
  7.  
  8. a = Text1
  9. b = Text2
  10. c = Text3
  11. d = Text4
  12. data = a & b & c & d
  13.  
  14. If data <> "" = False Then
  15. End
  16.  
  17. Else
  18. data = d & c & b & a
  19. Text5 = data
  20.  
  21. End If


Y hace lo que tenemos que conseguir, bueno es lo que necesito que me expliques, claro, porque yo de C, nada de nada, xd.



Yo creo que si eso, lo hiciera con el data=4bytes, antes de subirlo al archivo, pues tendria lo que necesito.
6  Programación / Programación C/C++ / Re: Ayuda con archivo binario, por favor. en: 21 Abril 2011, 13:42
Te agradezco la respuesta y la informacion, que por cierto no la sabia, xd, pero creo que ahora estoy mas liado que antes, jejejje.

Te explico mas detalladamente, y a ver si me entero de una vez, veras yo creo que es el archivo lo que esta mal, ya que yo tengo un programa que mete los bytes dentro del chip-micro, al que yo se los saco, por medio del puerto paralelo.

Ese programa que te comento, hace bien su trabajo, ya que no lo e hecho yo, jejeje, lo que yo estoy haciendo es leer lo que antes le e escrito, como te digo com otro programa, y el archivo que le escribo es exactamente igual que la salida de pantalla=consola que te puse antes, mira.






Como ves, el archivo bin creado, tiene que ser como el de arriba, yo siguiendo lo que tu comentas, me inclinaria mas, porque la salida de consola, fuera la que estubiera mal, y hay es donde los bytes deberian de ir invertidos.

7  Programación / Programación C/C++ / Ayuda con archivo binario, por favor. en: 20 Abril 2011, 18:41
Pues tengo un problema algo raro, y esque tengo la cabeza echa polvo de las vueltas que le e dado, xd, a ver si alguien fuera tan amable de resolverme este problema, que seguro sera una tonteria, pero ya me rindo de las vueltas que le e dado.

Mejor una imagen.




Lo de arriba es la salida de pantalla de consola, y lo de abajo es el archivo ya creado, como podeis ver, me invierte los bytes, xd, esta es la forma que escribo en el archivo.

Código
  1. fwrite( (unsigned char*) &data, 1, sizeof(data), fd);

Los datos que salen por consola, son exactamente los que necesito ir metiendo en el archivo, osea que sacarlos los saca bien, es a la hora de escribirlo en el archivo bin, donde no hay manera.

Pues a ver si me podeis echar una manita, por favor.

gracias y saludos.
8  Programación / Scripting / Re: Acciones sobre archivos de texto. [Batch] en: 8 Julio 2010, 20:15
Justo, lo que necesitaba, ;-)

Gracias leo, e usado el codigo de for, me va estupendamente.

Te estoy muy agradecido, me as quitado un quebradero de cabeza.

un saludo amigo
9  Programación / Scripting / Re: Acciones sobre archivos de texto. [Batch] en: 7 Julio 2010, 17:13

Sí, ya más claro, ¿pero siempre hay ese delimitador?

O sea, siempre está
Citar
texto..... | texto....

¿?


Si leo, SIEMPRE, esta el | y ni el, ni lo que sigue, lo necesito, solo los hexs.

Osea, TODOS los archivos, los necesito asin.

Código:
  ad 55 6b b9   ad b6 ef ba   05 bc 36 9d   3c 86 43 38 
  bf cf 2f bf   4a 8b d7 09   4d 02 41 00   bc c7 88 fd     
  f7 19 be aa   03 c6 18 ee   b3 2c b9 b8   73 89 0b 72
  06 57 8b c9   77 b3 79 c3   4f 5f db 60   e7 89 bd 55   
  06 90 79 12   f6 84 67 b1   84 c4 dc 22   5b 3a 7f 45   
  ac 5d 14 7e   1d c6 b9 65   8f 6c 37 36   


y NO me sirven asin.

 
Código:
  ad 55 6b b9   ad b6 ef ba   05 bc 36 9d   3c 86 43 38   | .Uk.......6.<.C8
  bf cf 2f bf   4a 8b d7 09   4d 02 41 00   bc c7 88 fd   | ../.J...M.A.....
  f7 19 be aa   03 c6 18 ee   b3 2c b9 b8   73 89 0b 72   | .........,..s..r
  06 57 8b c9   77 b3 79 c3   4f 5f db 60   e7 89 bd 55   | .W..w.y.O_.`...U
  06 90 79 12   f6 84 67 b1   84 c4 dc 22   5b 3a 7f 45   | ..y...g...."[:.E
  ac 5d 14 7e   1d c6 b9 65   8f 6c 37 36                 | .].~...e.l76

A ver si fueras capaz de darme una idea, gracias.
10  Programación / Scripting / Re: Acciones sobre archivos de texto. [Batch] en: 5 Julio 2010, 14:21
Gracias leo por tu respuesta tan rapida, pero hay un problemilla.

Veras som muchisimos archivos, todos con hex y acsii, asin.


 
Código:
ad 55 6b b9   ad b6 ef ba   05 bc 36 9d   3c 86 43 38  | .Uk.......6.<.C8
  bf cf 2f bf   4a 8b d7 09   4d 02 41 00   bc c7 88 fd     | ../.J...M.A.....
  f7 19 be aa   03 c6 18 ee   b3 2c b9 b8   73 89 0b 72  | .........,..s..r
  06 57 8b c9   77 b3 79 c3   4f 5f db 60   e7 89 bd 55   | .W..w.y.O_.`...U
  06 90 79 12   f6 84 67 b1   84 c4 dc 22   5b 3a 7f 45   | ..y...g...."[:.E
  ac 5d 14 7e   1d c6 b9 65   8f 6c 37 36                       | .].~...e.l76


Como ves la parte de la derecha, tiene los hex convertidos en acsii, y com este codigo pues lo quito todo, ya que para manipular el archivo, necesito quitar toda esa parte.

Código:
type private.txt
for /f "tokens=1-16" %%a in ('type texto1.txt') do (
echo %%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p >> texto2.txt
)
echo:
type texto2.txt
Tip provisto por Tomi Salmi.

Veo que lo que me pones, quita caracter por carater, pero los archivos som distintos, osea que esa parte es solo en ese archivo, en otros es totalmente distinto, lo unico que es igual es el |, por eso realmente lo que necesito, es algo que me quite TODO, a partir del | incluido.

Ahora esta mas claro, no, gracias
Páginas: [1] 2 3 4 5
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines