off topic: php - acortar una cadena

Miguel Oyarzo O. admin en aim.cl
Jue Ene 20 01:12:04 CLST 2011


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


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