Investigue y todas las funciones q pille (hasta codificacion eb base por alli 256) y todas fallan con mi numero de 21 digitos. Es muy grande para tratarlo facilmente en PHP.

Quizas otro tipo de tratamiento, como gzip o similar (para PHP), pero igual me dejan una cadena mínima de 14 caracteres.



=====================================
Miguel A. Oyarzo O.
Ingeniería en Redes y Telecomunicaciones
Austro Internet S.A.  &  INALAMBRICA S.A.
Teléfono: [+05661] 710030
Punta Arenas - Chile
Linux User: # 483188 - counter.li.org
=====================================

El 19-01-2011 23:53, Juan C. Olivares escribió:
Miguel:

Así es. Para saber la cantidad de dígitos según la base, se puede usar
ceil(log[baseX](10^25))

Por ejemplo: log35(10^25) = 13.6

Al contrario, puedes calcular la base mínima que necesitas:

(10^25)(1/10) = 125.8

Necesitaas una base de 126 para llegar a 10 dígitos :)

Otra forma más simple podría ser usando una llave en una base de datos o en
memcached. Por ejemplo, calcular un aleatorio y guardar su significado ¿te
sirve?.

2011/1/19 Miguel Oyarzo O.<ad...@aim.cl>


Juan C. Olivares
No se exactamente a que te refieres como "arreglo de bytes" pero lo que
hice fue pasar la cadena numerica a base 35 y aun asi solo puedo obtener una
representacion en 14 caracteres de 0 a la z.



=====================================
Miguel A. Oyarzo O.
Ingeniería en Redes y Telecomunicaciones
Austro Internet S.A.&   INALAMBRICA S.A.
Teléfono: [+05661] 710030
Punta Arenas - Chile
Linux User: # 483188 - counter.li.org
=====================================

El 19-01-2011 22:32, Juan C. Olivares escribió:

  Miguel:

Lo que pasa es que ahí estás pasando a base64 el string. Lo que deberías
hacer es obtener el número como arreglo de bytes... no sé cómo se hace
exactamente en PHP.

2011/1/19 Miguel Oyarzo O.<ad...@aim.cl>


Eso pensé yo, pero mira

echo base64_encode("801816020110119185516");
Salida: ODAxODE2MDIwMTEwMTE5MTg1NTE2


=====================================
Miguel A. Oyarzo O.
Ingeniería en Redes y Telecomunicaciones
Austro Internet S.A.&    INALAMBRICA S.A.
Teléfono: [+05661] 710030
Punta Arenas - Chile
Linux User: # 483188 - counter.li.org
=====================================

El 19-01-2011 22:20, Juan C. Olivares escribió:

  Como, al parecer, esa variable es numérica, es súper simple. Sólo debes

cambiar la base (por ejemplo: decimal a base64).

En teoría, el valor máximo de 21 caracteres (10^21) puede ser
representado
por 12 caracteres en base 64. Puedes usar las funciones de base64
existentes
en PHP:

http://php.net/manual/es/function.base64-encode.php
http://php.net/manual/en/function.base64-decode.php

2011/1/19 Miguel Oyarzo O.<ad...@aim.cl>


  Estimados,

Necesito acortar de cualquier forma una variable de 21 caracteres y
dejar
una representacion en solo 10.

Ejemplo:

echo acortar("192034123456456789098");
Salida:  !QQ23"!EQW

echo deacortar("!QQ23"!EQW");
Salida: 192034123456456789098

No más de 10 (ese es el problem).
Alguna sugerencia?

--
=====================================
Miguel A. Oyarzo O.
Ingeniería en Redes y Telecomunicaciones
Austro Internet S.A.&     INALAMBRICA S.A.
Teléfono: [+05661] 710030
Punta Arenas - Chile
Linux User: # 483188 - counter.li.org
=====================================










Responder a