您根本不需要移动。符号位是字节数组中的最高有效(=最左边)位。由于您知道数字始终为正,因此可以保证它为0。但是,整个数组都是右对齐的。
因此有两种情况:您最左边的字节是否为0x00。如果它是0x00,则可以放心地删除它:
byte[] array = bigInteger.toByteArray();if (array[0] == 0) { byte[] tmp = new byte[array.length - 1]; System.arraycopy(array, 1, tmp, 0, tmp.length); array = tmp;}如果它不为0,则不能删除它-但是数组将已经在所需的表示形式中,因此您无需执行任何操作。
上面的代码在两种情况下均适用。


![BigInteger到byte [] BigInteger到byte []](http://www.mshxw.com/aiimages/31/507341.png)
