문제

는 동안 작성을 위해 게임 J2ME 습으로 java 를 사용하여.랭.정수입니다.parseInt()

우리는 여러 가지 상수 값으로 정의 진수 값을,예를 들어:

CHARACTER_RED = 0xFFAAA005;

게임을하는 동안 가치는 직렬화하고 받는 네트워크 연결을 통해,오는 문자열로 표현의 의 hex 값입니다.하기 위해서 분석은 그것을 다시 int 우리는 unsuccesfully 려고 다음과 같다:

// Response contains the value "ffAAA005" for "characterId"
string hexValue = response.get("characterId");
// The following throws a NumberFormatException
int value = Integer.parseInt(hexValue, 16);

그때 나는 어떤 시험도 이:

string hexValue = Integer.toHexString(0xFFAAA005);
// The following throws a NumberFormatException
int value = Integer.parseInt(hexValue, 16);

이것은 예외에서 실제 코드:

java.lang.NumberFormatException: ffaaa005
    at java.lang.Integer.parseInt(Integer.java:462)
    at net.triadgames.acertijo.GameMIDlet.startMIDlet(GameMIDlet.java:109)

이 인정해야합니다,당황했다.보고 parseInt 코드 NumberFormatException 것 같을 때 발생 수는 분석되는"십자가"이"부정적인/긍정적인 경계"(아마 누군가가 편집할 수 있습에서 바로 전문 용어에 대한 이?).

이것이 예상한 행동을 위해 정수입니다.parseInt 기능입니까?결국 나는 내 자신을 쓰기 진열 분석 기능,그리고 나는 아주 불쾌하게 제공되는 구현합니다.

다시 말해서,내의 기대는 정수입니다.parseInt()에 대한 작업 진수 문자열 표현의 정수 잘못?

편집:내 초기 게시 내가 쓴 0xFFFAAA005 대신 0xFFAAA005.그 이후로 수정되었습니다.

도움이 되었습니까?

해결책

String 당신은 분석은 너무 커서 int.자바에서는, int 은 32 비트 데이터를 입력합니다.귀하의 문자열 이상 필요합 36 비트입니다.


귀하의(긍정적)값이 너무 커서 32-bit int.

다른 팁

입력 (4289372165)이 int (2147483647)?

값을 a로 구문 분석하십시오 long 그리고 선두를 다듬습니다 "0x" 구문 분석하기 전에 문자열에서 벗어납니다.

public class Program {
    public static void main(String[] args) {
        String input = "0xFFFAAA005";
        long value = Long.parseLong(input.substring(2), 16);
        System.out.print(value);
    }
}

나는 Java Dev가 아니지만 Parseint는 정수와 만 작동한다고 생각합니다. 0xfffaaa005에는 9 개의 16 진수가 있으므로 int가 아니라 길다. 내 생각에 결과 데이터 유형보다 더 큰 숫자를 구문 분석 해달라고 요청했기 때문에 불평하고 있습니다.

당신의 번호는 int에 맞기에는 너무 커서 long.parselong ()을 대신 사용해보십시오. 또한 문자열에 0x가 있으면 문자열이 구문 분석되지 않는 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top