zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    自闭的D7
    D2
    Codeforces Round #531 (Div. 3)
    hello 2019 D
    牛客练习赛36B
    cf954H
    gym102007 E
    Gym 101972
    Gym 101810
    试题 历届试题 青蛙跳杯子(bfs)
  • 原文地址:https://www.cnblogs.com/freewing/p/4481431.html
Copyright © 2011-2022 走看看