FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Gracias a ambos por responder.
le detallo mejor el problema: Mi cliente me debe pasar un numero de 30 dígitos por telefono (no tengo otro medio ) y esto me acarrea 2 inconvenientes. 1- el cliente no debe percatarse del dato que me esta pasando (por eso la encriptación). 2-Debo reducir los mas posible este dato para evitar algún error al dictarme el numero. Por eso lo 1° que se me vino a la mente es en ves de pasar a base 16 (hexadecimal) pasarlo a base 35 y asi utilizar los caracteres del abecedario(reduciendo los caracteres que me dicta y a la ves no se percatara del dato que me esta pasando). pero no me es sencillo ya que para pasar entre base en algún momento tendré que dividir y el numero de 30 dígito es muy largo incluso para ponerlo en una variable Int64 Por eso necesito de su ayuda para ver si me ayudan a pasar un numero de 30 dígitos de base 10 (guardado en un string)a base 35 y la operación inversa. O si se le ocurre alguna otra manera para solucionar el inconveniente. siguiendo la lógica que indico ñuño no me pasa correctamente al intentar de pasar el numero 36 a base 35 me debería dar Z0 Última edición por acertij022 fecha: 14-04-2011 a las 04:27:02. |
#2
|
||||
|
||||
Analizando un poco la base debería ser 32 ya que el 32 equivale en binario al número 11111 con lo cual el pasaje seria pasar el string que contiene el numero en base 10 a binario y separar el resultado en grupos de de 5 y colocar su equivalente en base 32 y multiplicando el numero según la posición. es decir
34 en base 10 100010 en base 2 1 00010 lo separo en grupo de 5 1 2 lo paso cada grupo a su equivalente en base 32 y por ultimo multiplico según la posición 1 x 32 + 2 = V2 entonces 34 en base 10 es igual a V2 en base 32 ¿Es correcta mi deducción? |
#3
|
||||
|
||||
Otra manera mas sencilla que encontre.
suponiendo que tenemos el numero 2314 en base 10 2334/32 = 72 resto = 10 72/32 = 2 resto 8 con lo cual nos queda 28A y el proceso inverso: A *1 + 8* 32 + 2 *32 * 32 = 2314 El inconveniente ahora que tengo es: ¿en que tipo de variable lo puedo poner para luego realizar la división ya que los 30 dígitos no entra en un Int64? |
#4
|
||||
|
||||
Hola acertijo022.
Número base 10 a base n:
Número base N a base 10:
Llamadas de ejemplo usando el número 2314 con base 32 y 36:
Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 14-04-2011 a las 18:00:28. |
#5
|
||||
|
||||
Gracias ecfisa eso justamente lo que necesitaba.
|
#6
|
||||
|
||||
Y, ¿cómo se resuelve lo de que el número de 30 dígitos no cabe en un Int64 (menos en un longint)?
// Saludos |
#7
|
||||
|
||||
Cita:
Supongo que diciéndole al cliente que limite el número a 999999999999999999. Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 15-04-2011 a las 01:12:50. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Comprimir | Roxy188 | Varios | 1 | 23-09-2008 23:52:18 |
comprimir AVI con la API | zidfrid | API de Windows | 0 | 20-06-2007 22:40:28 |
comprimir AVI con la API. | zidfrid | C++ Builder | 1 | 06-06-2007 22:18:11 |
Comprimir con UPX | Mr.Vaka | Varios | 6 | 29-12-2005 14:00:50 |
comprimir un jpg | User_baja1 | Gráficos | 1 | 08-07-2005 11:47:56 |
|