BigInteger与byte[]互转注意问题
1.byte[]转BigInteger
a.高位字节在后
用new BigInteger(byte[])可以实现byte[]转BigInteger,但是要注意字节顺序:高位字节在后
所以在转之前要把byte[]反转一下
b.正整数
需要在byte[]后面加个字节[00]
源代码
public BigInteger toBigInteger(byte[] v) { byte[] r = new byte[v.Length + 1]; Array.Copy(v.Reverse().ToArray(), 0, r, 0, v.Length); return new BigInteger(r); }
2.BigInteger转byte[]
同样要注意字节顺序
public byte[] fromBigInteger(BigInteger v, int length) { byte[] r = v.ToByteArray().Reverse().ToArray(); if (r.Length < length) { byte[] t = new byte[length]; Array.Copy(r, 0, t, length - r.Length, r.Length); return t; } return r; }