Codificacion MIME

Aplicaciones de código fuente abierto para descargar

Codificacion MIME

Notapor ErikH » Sab Jul 26, 2008 5:50 pm

Esta es una biblioteca para codificar cadenas arbitrarias de bytes a texto imprimible segun lo que entendi de la pagina de Wiki MIME en base64

Mientras hacia esta biblioteca encontre una manera de manejar cadenas de caracteres de una forma mas rapida que es pasando primero la linea de caracter a una matriz de bytes manejando esta matriz de bytes para las operaciones que se requieran hacer y al terminar devolverlo a cadena, como no existia una funcion de :arrow: MatrizByteDeCadena() la agregue a la biblioteca cadena, tambien hice una optimizacion para :arrow: RepCarac debido a que las concatencaiones para llegar a por ejemplo unos 50 kb requerian de 50 mil concatenaciones,
con la nueva funcion no toma tanto llegar a tal numero.
Al principio pense el decirle al boss que el lo hiciera, :P
pero luego se me ocurrio como podria hacerlo. La forma en que lo resolvi fue concatenando primero de 1+1 enseguida el resultado de eso daria 2 por lo que podriamos sumarlos 2+2 y nos darian 4, como veran va creciendo en 2^n y de esa manera se requieren menos sumas de cadenas para llegar a la cadena deseada.

Por cierto encontre que el valor correcto para el argumento de una funcion de la api de windows dentro de :arrow: CadenaDeMatrizByte es ByteAry[0]@ no solo ByteAry@

Tal vez la biblioteca sea algo inutil :lol: pero demuestra como manejar cadenas de una manera mas rapida. ;)

Parece que ya lo estoy entendiendo un poco a esto de la programacion. :ugeek:
Adjuntos
MIME.zip
Manejo de cadenas y RepCarac optimizado
(5.28 KiB) 548 veces
ImagenEntrá a la wiki en OpenShift
Colofox!!!!
ErikH
 
Mensajes: 151
Registrado: Jue Nov 29, 2007 11:24 pm
Ubicación: Algún lugar de México

Sponsor


Re: Codificacion MIME

Notapor Pauscal » Mar Jul 29, 2008 10:29 am

Hola EriK. La verdad que no lo vi muy a fondo a tu código, pero al parecer es un conversor de texto a base64 y viceversa. Este código es uno de los content transfer encoding definidos por MIME, y su gran ventaja es que sus caracteres se pueden representar completamente con caracteres ASCII imprimibles (ideal para transferir datos binarios sobre medios que sólo soportan caracteres imprimibles). Más información acá.
Con respecto a la función RepCarac: la implementación que trae la biblioteca de Pauscal es la más simple, pero como habrás visto, no la más óptima. Sin embargo, si utilizamos la API de Windows, es posible reescribirla para que se ejecute en tiempo prácticamente constante sin ninguna concatenación. Más tarde la hago y la subo.

Muy buen trabajo! Segui así :clap:
Si este proyecto te parece útil, aceptamos donaciones en Bitcoins: 1FdnaaQyVDqmhsJZw9gk41M3zUsJrDY7Hj
Pauscal
Jefe
 
Mensajes: 439
Registrado: Mar Nov 20, 2007 9:41 pm
Ubicación: Paraná, Entre Ríos, Argentina

Re: Codificacion MIME

Notapor Pauscal » Lun Ago 04, 2008 3:38 pm

Como prometí, acá está la implementación de la función RepCarac mucho más eficiente que la que trae la biblioteca de Pauscal (y sin usar la API de Windows!):

Código: Seleccionar todo
Privado:
Estruc ArregloDeByte, Arreglo[]:Byte
Público:
Proc RepCarac(bByte:Byte,dwRep:Entero):Cadena
   Var Bufer:ArregloDeByte
   Var @Ret:Cadena
   Var i, @Limpiador:Entero
   
   'Creamos un bufer del tamaño requerido
   Redim Bufer.Arreglo,dwRep
   
   'Llenamos el bufer con el byte requerido
   Contar i = 1 a dwRep
      Bufer.Arreglo[i-1] = bByte
   Seguir
   
   'Copiamos la dirección del bufer para devolverlo como cadena
   Ret@ = Bufer@
   
   'Copiamos la direccion del bufer para limpiarlo
   '(para saltear su destrucción automática por parte de Pauscal
   Limpiador@ = Bufer@
   
   'Copiamos la cadena
   Resultado = Ret
   
   'Limpiamos
   Limpiador = 0
FinProc


P.D: No la probé mucho, pero debería funcionar bien :roll:
P.D2: Adjunto un programita que hace uso de esta función.
Adjuntos
RepCarac.zip
(524 Bytes) 535 veces
Si este proyecto te parece útil, aceptamos donaciones en Bitcoins: 1FdnaaQyVDqmhsJZw9gk41M3zUsJrDY7Hj
Pauscal
Jefe
 
Mensajes: 439
Registrado: Mar Nov 20, 2007 9:41 pm
Ubicación: Paraná, Entre Ríos, Argentina

Re: Codificacion MIME

Notapor ErikH » Jue Ago 07, 2008 9:57 pm

Que bueno que te diste tiempo para hacer la funcion mas optima. :)

Pero me parece que estaria bien, si agregaras una decision antes de llenar el arreglo con los bytes que necesitas para checar si el byte que se requiere para rellenar es Nulo,en ese caso no se requeriria pasar por todo el arreglo para escribirle cero, ya que el Redim ya se encargo de eso.
ImagenEntrá a la wiki en OpenShift
Colofox!!!!
ErikH
 
Mensajes: 151
Registrado: Jue Nov 29, 2007 11:24 pm
Ubicación: Algún lugar de México

Re: Codificacion MIME

Notapor Pauscal » Vie Ago 08, 2008 9:24 am

ErikH escribiste:Pero me parece que estaria bien, si agregaras una decision antes de llenar el arreglo con los bytes que necesitas para checar si el byte que se requiere para rellenar es Nulo,en ese caso no se requeriria pasar por todo el arreglo para escribirle cero, ya que el Redim ya se encargo de eso.

Sí, es verdad.
Perdón, es que estoy acostumbrado a usar lenguajes que no inicializan automáticamente las variables :lol:
Igualmente no vas a notar un incremento considerable de performance, ya que ese bucle se ejecuta bastante rápido, incluso para números grandes :harhar:
Si este proyecto te parece útil, aceptamos donaciones en Bitcoins: 1FdnaaQyVDqmhsJZw9gk41M3zUsJrDY7Hj
Pauscal
Jefe
 
Mensajes: 439
Registrado: Mar Nov 20, 2007 9:41 pm
Ubicación: Paraná, Entre Ríos, Argentina


Volver a Código Abierto

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron