Conversión de Integer a BigInteger

129

Me preguntaba si había alguna forma de convertir una variable de tipo Integer a BigInteger. Intenté encasillar la variable Integer, pero recibo un error que dice tipo inconvertible.

Steffan Harris
fuente
12
Ha hecho algunas preguntas sobre BigInteger que se resolverían con bastante facilidad leyendo los Javadocs. Sigue el enlace en mi respuesta y revisa todos los métodos y constructores que tiene BigInteger.
jjnguy

Respuestas:

239

El método que desea es BigInteger # valueOf (long val) .

P.ej,

BigInteger bi = BigInteger.valueOf(myInteger.intValue());

Hacer una Cadena primero es innecesario y no deseado.

jbindel
fuente
2
@Mich, no. Si es un número entero, Java lo expandirá automáticamente por usted. (El OP dice que tiene un número entero)
jjnguy
Eso funcionaría igual de bien. En un entero, intValue () no se desbordará, por lo que la llamada a valueOf simplemente ampliará el int a un largo. No hay una diferencia notable entre el uso de longValue () e intValue () en este ejemplo, pero si comenzó con un Long, le gustaría usar longValue ().
jbindel
2
Amar, eso sería similar a otros enfoques basados ​​en cadenas. La clave para evitar aquí es cualquier generación o análisis de cadenas.
jbindel
1
No es que usar una cadena le dé la respuesta incorrecta, pero es un trabajo adicional para la computadora. Por ejemplo, puede ir a la casa de al lado caminando por la puerta de al lado, o puede ir en la dirección opuesta y recorrer casi todo el mundo. Aún llegarías allí, y si tienes un avión cohete rápido, es posible que no notes el tiempo que tomó, pero es un desperdicio y lleva más tiempo.
jbindel
1
Y qué pasa con los casos en que myInteger es nulo, será NPE.
Wizzard
-4

Puedes hacer de esta manera:

    Integer i = 1;
    new BigInteger("" + i);
Giorgios Karagounis
fuente
55
Puedes, pero ¿por qué lo harías? Se propone una solución mucho mejor en la respuesta ya aceptada.
Colin
Hacer cadenas para realizar operaciones matemáticas enteras desperdicia más ciclos de CPU de los que querría contar.
jbindel