Foros del Web » Programando para Internet » PHP »

convertir de base 10 a base 64 ?

Estas en el tema de convertir de base 10 a base 64 ? en el foro de PHP en Foros del Web. Hola, estoy realizando un proyecto, para la parte de facturacion tengo que convertir de base decimal a base 64, utilice el base64_encode pero no me ...
  #1 (permalink)  
Antiguo 27/05/2008, 17:21
 
Fecha de Ingreso: junio-2007
Mensajes: 254
Antigüedad: 16 años, 10 meses
Puntos: 2
convertir de base 10 a base 64 ?

Hola,

estoy realizando un proyecto, para la parte de facturacion tengo que convertir de base decimal a base 64, utilice el base64_encode pero no me sale los mismos resultados que deberian salirme por ejm:

Base64(1056575376)=++W+G //esto es lo correcto

lo anterior deberia salirme pero sale otra cosa,
La diferencia tal estribe en el diccionario a utilizarse, les paso el diccionario:

0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,
L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,
g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,+,/

ya investigue un poco y creo que debo dividir sucesivamente el numero entre 64 e ir tomando en cuenta el modulo y al final de atras para adelante convertir los modulos a su equivalente en base64,

si pueden ayudarme con alguna sugerencia, idea o pseudocido o codigo les estare muy agradecido.

gracias de antemano,
saludos.
  #2 (permalink)  
Antiguo 27/05/2008, 17:40
 
Fecha de Ingreso: marzo-2008
Mensajes: 306
Antigüedad: 16 años
Puntos: 6
Respuesta: convertir de base 10 a base 64 ?

El resultado de Base64(1056575376) es: 62,62,32,62,16 (se representara con el caracter de orden correspondiente del diccionario).
es decir: 62*(64^4)+62*(64^3)+32*(64^2)+62*64+16

Para llegar a la solución hay que emplear el mecanismo que tu has descrito. Se ve mejor con el ejemplo:
1056575376/64 = 16508990*64 + 16 -> 16 es el ultimo valor
16508990/64 = 257952*64 + 62 -> 62 es el penúltimo valor
257952/64 = 4030*64 + 32 -> 32 es el antepenúltimo valor
4030/64 = 62*64 + 62 -> 62 es el segundo valor
62/64 = 0*64 + 62 -> 62 es el primer valor
__________________
Pop & Rock Bands
Pop Music Stars
  #3 (permalink)  
Antiguo 28/05/2008, 08:49
 
Fecha de Ingreso: junio-2007
Mensajes: 254
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: convertir de base 10 a base 64 ?

Hola j bond, gracias por la responder,

bueno, ahora tengo una duda, me van a matar, pero no se que funcion de php me saca la parte entera de una division, por ejm si divido 7 entre 2 me debe salir 3 y no 3.5, ¿no existe la funcion y tengo que hacerlo por partes dividir y sacar la parte entera?

Gracias por la ayuda,
saludos.
  #4 (permalink)  
Antiguo 28/05/2008, 09:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: convertir de base 10 a base 64 ?

Hola lucas1500,

Prueba hacerlo así:
Código PHP:
$entero 2;
echo 
$entero
Saludos.
  #5 (permalink)  
Antiguo 28/05/2008, 12:42
 
Fecha de Ingreso: junio-2007
Mensajes: 254
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: convertir de base 10 a base 64 ?

Hola,

aqui les muestro el codigo que hice, por si tal vez haya un error o tal seria mejor hacerlo de otra forma mas elegante
Código PHP:

$diccionario
[0]='0';
$diccionario[1]='1';
$diccionario[2]='2';
$diccionario[3]='3';
$diccionario[4]='4';
$diccionario[5]='5';
$diccionario[6]='6';
$diccionario[7]='7';
$diccionario[8]='8';
$diccionario[9]='9';
$diccionario[10]='A';
$diccionario[11]='B';
$diccionario[12]='C';
$diccionario[13]='D';
$diccionario[14]='E';
$diccionario[15]='F';

$diccionario[16]='G';
$diccionario[17]='H';
$diccionario[18]='I';
$diccionario[19]='J';
$diccionario[20]='K';
$diccionario[21]='L';
$diccionario[22]='M';
$diccionario[23]='N';
$diccionario[24]='O';
$diccionario[25]='P';
$diccionario[26]='Q';
$diccionario[27]='R';
$diccionario[28]='S';
$diccionario[29]='T';
$diccionario[30]='U';
$diccionario[31]='V';

$diccionario[32]='W';
$diccionario[33]='X';
$diccionario[34]='Y';
$diccionario[35]='Z';
$diccionario[36]='a';
$diccionario[37]='b';
$diccionario[38]='c';
$diccionario[39]='d';
$diccionario[40]='e';
$diccionario[41]='f';
$diccionario[42]='g';
$diccionario[43]='h';
$diccionario[44]='i';
$diccionario[45]='j';
$diccionario[46]='k';
$diccionario[47]='l';

$diccionario[48]='m';
$diccionario[49]='n';
$diccionario[50]='o';
$diccionario[51]='p';
$diccionario[52]='q';
$diccionario[53]='r';
$diccionario[54]='s';
$diccionario[55]='t';
$diccionario[56]='u';
$diccionario[57]='v';
$diccionario[58]='w';
$diccionario[59]='x';
$diccionario[60]='y';
$diccionario[61]='z';
$diccionario[62]='+';
$diccionario[63]='/';

$num=678698765;
$y=64;
$i=1;

do
{
          
$cociente=floor($num/$y);
          echo 
"el cociente es: ".$cociente;
          echo 
"<br>";
          
$modulo=$num%$y;
          
$array[$i]=$modulo;
          
$i=$i+1;
          echo 
"el modulo es: ".$modulo;
          echo 
"<br>";
          
$num=$cociente;
          
       
 } while (
floor($num/$y) > );
 
$array[]=$num;
$cont_array=count($array);
echo 
"el cont array es: ".$cont_array;
echo 
"<br>";
for (
$i 1$i <= $cont_array$i++)
{
    
$array_hexadecimal[$i]=$diccionario[$array[$i]];
    echo 
$array_hexadecimal[$i];
}
$codigo implode(""$array_hexadecimal);
$codigo=strrev ($codigo);
echo 
"<br>";
echo 
"el codigo es: ".$codigo
Si tiene error me lo dicen o tal vez otra forma de hacerlo,
gracias por la ayuda,
saludos.
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 21:56.