que escribió en un comentario (por favor ponga tal información en la pregunta - hay un enlace de edición para esto):
que necesito para ser capaz de multiplicar el contenido de un archivo por una constante. Estaba asumiendo que puedo leer los bytes en un BigInteger y luego multiplicar, sin embargo, dado que algunos de los bytes son negativos estoy terminando con 12 13 15 -12 etc. y se queda atascado.
Si desea utilizar todo el archivo como un BigInteger, léalo en un byte [] y dele esta matriz (como un todo) al constructor BigInteger.
/**
* reads a file and converts the content to a BigInteger.
* @param f the file name. The content is interpreted as
* big-endian base-256 number.
* @param signed if true, interpret the file's content as two's complement
* representation of a signed number.
* if false, interpret the file's content as a unsigned
* (nonnegative) number.
*/
public static BigInteger fileToBigInteger(File f, boolean signed)
throws IOException
{
byte[] array = new byte[file.length()];
InputStream in = new FileInputStream(file);
int i = 0; int r;
while((r = in.read(array, i, array.length - i) > 0) {
i = i + r;
}
in.close();
if(signed) {
return new BigInteger(array);
}
else {
return new BigInteger(1, array);
}
}
A continuación, puede multiplicar su BigInteger y guardar el resultado en un nuevo archivo (utilizando el método toByteArray()
).
Por supuesto, esto depende del formato de su archivo - mi método asume que el archivo contiene el resultado del método toByteArray()
, no en otro formato. Si tiene algún otro formato, agregue información sobre esto a su pregunta.
"Necesito poder multiplicar el contenido de un archivo por una constante". parece un objetivo bastante dudoso, ¿qué es lo que realmente quieres hacer?
que necesito para ser capaz de multiplicar el contenido de un archivo por una constante. Asumía que podía leer los bytes en un BigInteger y luego multiplicarlos; sin embargo, como algunos de los bytes son negativos, terminé con 12 13 15 -12 etc. y me atasco. – tyr
@tyr: Editando ... –
Gracias, creo que puede funcionar de esa manera, :) – tyr