toByteArray()中的Java BigInteger额外字节

toByteArray()中的Java BigInteger额外字节,java,biginteger,Java,Biginteger,有人能解释一下为什么我用2字节的值toByteArray()构造BigInteger然后返回3 BigInteger data = new BigInteger("FFFF", 16)) data.toByteArray() <-- here am getting 3 bytes. biginger数据=新的biginger(“FFFF”,16)) data.toByteArray()你读了吗?这就解释了长度:它需要额外的字节作为符号位。FFFF在基数16中是正数65535。返回一个值,

有人能解释一下为什么我用2字节的值toByteArray()构造BigInteger然后返回3

BigInteger data = new BigInteger("FFFF", 16))
data.toByteArray() <-- here am getting 3 bytes.
biginger数据=新的biginger(“FFFF”,16))

data.toByteArray()你读了吗?这就解释了长度:它需要额外的字节作为符号位。
FFFF
在基数16中是正数65535。返回一个值,因此它必须返回字节
00 FF
,因为这两个字节的补数
FF FF
是-1,而不是65535。它在定义中,如果要将结果解释为无符号,唯一的解决方法是手动删除前导的
00
字节。好的,在字节[]的构造函数中有signum标志。有没有办法用字符串做同样的事情?我想这是这个问题的重复: