您根本不需要移动。符号位是字节数组中的最高有效(=最左边)位。由于您知道数字始终为正,因此可以保证它为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,则不能删除它-但是数组将已经在所需的表示形式中,因此您无需执行任何 *** 作。
上面的代码在两种情况下均适用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)