Foros del Web » Programando para Internet » Javascript »

Necesito un empunjoncito por favor

Estas en el tema de Necesito un empunjoncito por favor en el foro de Javascript en Foros del Web. Hola amigos! tengo un problema y no sé como resolverlo... sucede que lo que intento es convertir una variable (bueno, su información) en encode base64 ...
  #1 (permalink)  
Antiguo 01/04/2011, 04:46
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 15 años, 6 meses
Puntos: 3
Exclamación Necesito un empunjoncito por favor

Hola amigos!

tengo un problema y no sé como resolverlo... sucede que lo que intento es convertir una variable (bueno, su información) en encode base64 desde javascript


Tengo el siguiente código:


Código Javascript:
Ver original
  1. var END_OF_INPUT = -1;
  2.  
  3. var base64Chars = new Array(
  4.     'A','B','C','D','E','F','G','H',
  5.     'I','J','K','L','M','N','O','P',
  6.     'Q','R','S','T','U','V','W','X',
  7.     'Y','Z','a','b','c','d','e','f',
  8.     'g','h','i','j','k','l','m','n',
  9.     'o','p','q','r','s','t','u','v',
  10.     'w','x','y','z','0','1','2','3',
  11.     '4','5','6','7','8','9','+','/'
  12. );
  13.  
  14. var reverseBase64Chars = new Array();
  15. for (var i=0; i < base64Chars.length; i++){
  16.     reverseBase64Chars[base64Chars[i]] = i;
  17. }
  18.  
  19. var base64Str;
  20. var base64Count;
  21. function setBase64Str(str){
  22.     base64Str = str;
  23.     base64Count = 0;
  24. }
  25. function readBase64(){    
  26.     if (!base64Str) return END_OF_INPUT;
  27.     if (base64Count >= base64Str.length) return END_OF_INPUT;
  28.     var c = base64Str.charCodeAt(base64Count) & 0xff;
  29.     base64Count++;
  30.     return c;
  31. }
  32. function encodeBase64(str){
  33.     setBase64Str(str);
  34.     var result = '';
  35.     var inBuffer = new Array(3);
  36.     var lineCount = 0;
  37.     var done = false;
  38.     while (!done && (inBuffer[0] = readBase64()) != END_OF_INPUT){
  39.         inBuffer[1] = readBase64();
  40.         inBuffer[2] = readBase64();
  41.         result += (base64Chars[ inBuffer[0] >> 2 ]);
  42.         if (inBuffer[1] != END_OF_INPUT){
  43.             result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
  44.             if (inBuffer[2] != END_OF_INPUT){
  45.                 result += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
  46.                 result += (base64Chars [inBuffer[2] & 0x3F]);
  47.             } else {
  48.                 result += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
  49.                 result += ('=');
  50.                 done = true;
  51.             }
  52.         } else {
  53.             result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
  54.             result += ('=');
  55.             result += ('=');
  56.             done = true;
  57.         }
  58.         lineCount += 4;
  59.         if (lineCount >= 76){
  60.             result += ('\n');
  61.             lineCount = 0;
  62.         }
  63.     }
  64.    
  65.             return result;
  66.  
  67. }


y funciona correctamente, pero ahora lo que necesito es como que hacerlo funcionar desde otro javascript y definitivamente ya me he atorado, tengo él siguiente script:


Código Javascript:
Ver original
  1. var ready = document.getElementById('BotonCalc').value;
  2. var C = document.getElementById('C').value;
  3. var G = document.getElementById('G').value;
  4. var E = document.getElementById('E').value;
  5. var CE = document.getElementById('CE').value;
  6. var EXPPP = document.getElementById('EXP_pp').value;
  7. var TPPP = document.getElementById('TP_pp').value;
  8. var BP = document.getElementById('B_Precio').value;
  9.  
  10. var VCadena = "C="+C+"&G="+G+"&E="+E+"&CE="+CE+"&EXPPP="+EXPPP+"&TPPP="+TPPP+"&BP="+BP;
  11.  
  12.  
  13. // Acontinuación aquí deseo que se ejecute la función convirtiendo la información de la variable VCadena en Base64, pero no he logrado que funcione de ninguna forma
  14.  
  15.  
  16.  
  17. //var lineabase64 = return encodeBase64(VCadena);
  18. //var lineabase64 = function encodeBase64(VCadena);
  19. //var lineabase64 = encodeBase64(VCadena);
  20.  
  21.  
  22.  
  23.  
  24.  
  25. if(ready != ""){ var mostrar = "block";}
  26. else {var mostrar = "none";}
  27.  
  28. document.getElementById('base64').innerHTML = lineabase64;


Y pues quisiera saber si alguien me puede apoyar por favor para ver como lograr que la variable lineabase64 contenga la información de VCadena codificada en Base64


Gracias de antemano por la ayuda
  #2 (permalink)  
Antiguo 01/04/2011, 09:12
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Necesito un empunjoncito por favor

Para codificar/decodificar en base64 podés usar esta utilidad: http://www.webtoolkit.info/javascript-base64.html
También hay navegadores que dan soporte nativo a este tipo de codificación con las funciones btoa (codificar) y atob (decodificar). (Casi todos menos... Adivinaste: IE)
Código PHP:
<script type="text/javascript">
var 
cad='lo que sea',pp;
alert(pp=btoa(cad));
alert(atob(pp));
</script> 
  #3 (permalink)  
Antiguo 01/04/2011, 09:15
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Necesito un empunjoncito por favor

Cita:
Iniciado por Panino5001 Ver Mensaje
Para codificar/decodificar en base64 podés usar esta utilidad: http://www.webtoolkit.info/javascript-base64.html
También hay navegadores que dan soporte nativo a este tipo de codificación con las funciones btoa (codificar) y atob (decodificar).
Código PHP:
<script type="text/javascript">
var 
cad='lo que sea',pp;
alert(pp=btoa(cad));
alert(atob(pp));
</script> 
Hola Panino;

El codigo javascript que anuncio al inicio funciona correctamente, y para evitar problemas que si Internet Explorer, que si FireFox, por eso lo codifico con un javascript pero mi problema es que no se cómo codificar (llamar la función) desde otro javascript (anuncio mis detalles en el segundo codigo que puse).

Gracias.
  #4 (permalink)  
Antiguo 01/04/2011, 09:20
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Necesito un empunjoncito por favor

Si funciona correctamente, esta opción debería funcionarte:
Código PHP:
var lineabase64 encodeBase64(VCadena); 
Si no te funciona es porque hay un problema en tu función de codificación o porque no has incluido el archivo que tiene la función en tu html (<script src="archivo.js" type="text/javascript"></script>)

Última edición por Panino5001; 01/04/2011 a las 09:33

Etiquetas: favor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:16.