Bug in Long.parseUnsignedLong

Louis Wasserman lowasser at google.com
Wed Dec 18 23:52:35 UTC 2013


Derp.  Here is the test case:

import java.math.BigInteger;

public class UnsignedLongBug {
  public static void main(String[] args) {
    try {
      String input = "1234567890abcdef1";
      System.out.println(Long.parseUnsignedLong(input, 16));
      BigInteger maxUnsignedLong =
BigInteger.ONE.shiftLeft(64).subtract(BigInteger.ONE);
      BigInteger inputValue = new BigInteger(input, 16);
      System.out.println(maxUnsignedLong.compareTo(inputValue));
      throw new AssertionError();
    } catch (NumberFormatException expected) {
      System.out.println("Correct");
    }
  }
}


On Wed, Dec 18, 2013 at 3:51 PM, Louis Wasserman <lowasser at google.com>wrote:

> The Javadoc of Long.parseUnsignedLong specifies that it should throw a
> NumberFormatException if "the value represented by the string is larger
> than the largest unsigned long, 2^64-1."
>
> This does not appear to be happening:
>
> --
> Louis Wasserman
>



-- 
Louis Wasserman



More information about the core-libs-dev mailing list