Tengo un número de 128 bits en hexadecimal almacenado en una cadena (de md5, la seguridad no es una preocupación aquí) que me gustaría convertir a una base- 36 cuerdas Si fuera un número de 64 bits o menos, lo convertiría en un entero de 64 bits y luego usaría un algoritmo que encontré para convertir números enteros en cadenas de base 36, pero este número es demasiado grande para eso, así que estoy algo así como una pérdida de cómo abordar esto. Cualquier orientación sería apreciada.Convertir cadena hexadecimal de 128 bits a base-36 cadena
Editar: Después de que Roland Illig señalara la molestia de decir 0/0 y 1/l por teléfono y no obtener mucha densidad de datos por encima del hex, creo que puedo terminar quedándome con hexadecimal. Todavía tengo curiosidad de saber si existe una forma relativamente simple de convertir una cadena hexagonal de longitud arbitraria en una cadena base 36.
@eco: Si hay una restricción técnica que lo limita a 36 caracteres, entonces puede usar Base-32 en su lugar. Necesitarás usar 26 "dígitos" en lugar de 25, pero puedes usar el cambio de bits. – dan04
La razón para base-36 es que es fácil de leer por teléfono a los humanos. Base-36 me permitiría usar todos los números y el alfabeto, lo que lo haría mucho más corto que solo usar hexadecimal. – eco
base-36 codifica un poco más de 5 bits por dígito, que no es mucho más que los 4 bits que obtienes al usar hexadecimal. El riesgo que está asumiendo es que las personas confunden 0 con O y 1 con I. No creo que valga la pena el esfuerzo.En su lugar, debería utilizar los diez dígitos decimales e imprimirlos en grupos de cuatro. –