code: private static BigInteger bigForString(String str, int sigchars)
      {
          assert str.length() <= sigchars;
  
          BigInteger big = BigInteger.ZERO;
          for (int i = 0; i < str.length(); i++)
          {
              int charpos = 16 * (sigchars - (i + 1));
              BigInteger charbig = BigInteger.valueOf(str.charAt(i) & 0xFFFF);
              big = big.or(charbig.shiftLeft(charpos));
          }
          return big;
      }
docs: Copies the characters of the given string into a BigInteger.
  
  TODO: Does not acknowledge any codepoints above 0xFFFF... problem?