BigInteger乘法中的前导零

时间:2016-11-17 14:46:14

标签: java biginteger multiplying

我使用简单函数来乘以大整数。有时会包含一个前导零字节来输出。为什么会发生这种情况以及如何阻止它?

PS:a和b已经小于mod

#!/bin/bash

python test.py &
kill $!

1 个答案:

答案 0 :(得分:4)

如果(正)值的第一个字节为128到255,则会添加额外的零字节。

需要此字节,以便生成的字节至少有一个符号位(https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#toByteArray%28%29

BigInteger.valueOf(5L).toByteArray()

返回一个只有一个字节(5)的字节数组。

BigInteger.valueOf(128L).toByteArray()

返回一个只有两个字节的字节数组(0和128表示无符号表示)。这是为了区分结果

BigInteger.valueOf(-128L).toByteArray()

还返回一个包含两个字节的字节数组(255,无符号表示128)