Hola a todos, alguna vez se me presento un problema en el cual tenia una cadena N de caracteres y lo necesitaba convertir a un número entero, el problema es que cuando uno realiza un hash devuelve un valor mayor a nueve dígitos por tal motivo lo solucione de la siguiente forma:
Primero como estaba trabajando con algoritmos de encriptación la cadena de caracteres la convertía en un arreglo de bytes y la enviaba como parámetro al siguiente código:
Este método retorna el mismo número bajo la misma cadena, cabe señalar que no es la solución más óptima pero lo puedes probar con distintos String y veras que te funciona y si quieres puedes modificar la longitud o la forma de extraer los caracteres a convertir, acomodándolos a como más les sirva. Espero haya sido de ayuda y hasta una próxima oportunidad.
Primero como estaba trabajando con algoritmos de encriptación la cadena de caracteres la convertía en un arreglo de bytes y la enviaba como parámetro al siguiente código:
public static int toInt(byte[] buffer)
{
StringBuilder builder = new
StringBuilder(buffer.length << 1);
int result = 0;
for (byte b : buffer) {
if (((int) b &
0xff) < 0x10) {
builder.append(Long.toString((int) b & 0xff * 0x10));
}
builder.append(Long.toString((int) b & 0xff));
}
String changedBuffer =
builder.toString();
if (changedBuffer.length()
<= 9){ //Nos da un número mayor o igual a 9 dígitos
result =
Integer.parseInt(changedBuffer);
} else if
(changedBuffer.length() > 9) {//Procedemos a realizar la concatenación
int lengthBuffer =
changedBuffer.length();
String initBuffer =
changedBuffer.substring(0,5);
String mediaBuffer =
changedBuffer.substring(lengthBuffer-4,lengthBuffer);
String finalBuffer =
initBuffer + mediaBuffer;
result =
Integer.parseInt(finalBuffer);
}
return result;
}
Este método retorna el mismo número bajo la misma cadena, cabe señalar que no es la solución más óptima pero lo puedes probar con distintos String y veras que te funciona y si quieres puedes modificar la longitud o la forma de extraer los caracteres a convertir, acomodándolos a como más les sirva. Espero haya sido de ayuda y hasta una próxima oportunidad.
Comentarios
Publicar un comentario