자바에서는 unsigned int를 어떻게 정의하나요?
조회수 27623회
자바에 unsigned int를 정의하는 방법이 있나요? 자바에서 unsigned와 같은 의미를 가지는게 뭔가요? 지금 String.hashcode를 보고 있는데 여기서 32비트 unsigned int의 충돌가능성을 보고 싶습니다.
1 답변
-
기본적으로 자바에서 unsigned integer는 없습니다. 더 큰 양의정수를 얻고 싶으시면 int 대신에 long을 쓰시면 됩니다. 하지만 음수를 제외시키는 방법은 없습니다.
하지만 Java8 부터 Integer나 Long클래스에서 unsigned를 다루는 메소드가 몇개 추가되었는데,// Java 8 int vInt = Integer.parseUnsignedInt("4294967295"); System.out.println(vInt); // -1 String sInt = Integer.toUnsignedString(vInt); System.out.println(sInt); // 4294967295 long vLong = Long.parseUnsignedLong("18446744073709551615"); System.out.println(vLong); // -1 String sLong = Long.toUnsignedString(vLong); System.out.println(sLong); // 18446744073709551615 // Guava 18.0 int vIntGu = UnsignedInts.parseUnsignedInt(UnsignedInteger.MAX_VALUE.toString()); System.out.println(vIntGu); // -1 String sIntGu = UnsignedInts.toString(vIntGu); System.out.println(sIntGu); // 4294967295 long vLongGu = UnsignedLongs.parseUnsignedLong("18446744073709551615"); System.out.println(vLongGu); // -1 String sLongGu = UnsignedLongs.toString(vLongGu); System.out.println(sLongGu); // 18446744073709551615
이런 식으로 쓰시면 됩니다.
댓글 입력