off topic: php - acortar una cadena

Juan C. Olivares juancri en juancri.com
Mie Ene 19 23:53:08 CLST 2011


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. <admin en 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.<admin en 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.<admin en 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
>>>>> =====================================
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>
>>


-- 
Atte,
Juan Cristóbal Olivares

*Renovarse o morir: Mi PC de los sesenta tenía veinte mil militantes. Y mi
PC del siglo XXI tiene cuarenta gigabytes.*


Más información sobre la lista de distribución Linux