나는 많은 다른 값에 대한 문자열 비교 대신 int 비교를 할 수 있도록 8 자 길이의 16 진수 코드 인 문자열을 정수로 변환하려고합니다.
나는 이것이 C ++에서 매우 사소하다는 것을 알고 있지만 Java로해야합니다. 내가 만족시켜야 할 테스트 케이스는 본질적으로 "AA0F245C"를 int로 변환 한 다음 해당 문자열로 다시 변환하여 올바르게 변환되는지 확인하는 것입니다.
나는 다음을 시도했다 :
int decode = Integer.decode("0xAA0F245C"); // NumberFormatException
int decode2 = Integer.decode("AA0F245C"); //NumberFormatException
int parseInt = Integer.parseInt("AA0F245C", 16); //NumberFormatException
int valueOf = Integer.valueOf("AA0F245C", 16); //NumberFormatException
나는 또한 한 번에 두 문자를 수행하고 결과를 곱해 보았는데 변환이 작동하지만 숫자가 올바르지 않습니다.
int id = 0;
for (int h = 0; h < hex.length(); h= h+2)
{
String sub = hex.subSequence(h, h+2).toString();
if (id == 0)
id = Integer.valueOf(sub, 16);
else
id *= Integer.valueOf(sub, 16);
}
//ID = 8445600 which = 80DEA0 if I convert it back.
알다시피 써드 파티 라이브러리를 사용할 수 없으므로 Java 표준 라이브러리에서 수행해야합니다.
미리 도와 주셔서 감사합니다.
0xAA0F245C = 2853119068
하지만Integer.MAX_VALUE = 0x7fffffff = 2147483647
Integer.parseUnsignedInt("value",radix)
당신의 목적 에 맞는 방법을 추가했습니다 . 값이 Integer.MAX_VALUE
음수 보다 크면 음수로 매핑됩니다.