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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM