실제로는 Java 소켓 bufferedread에서 int 값을 읽고 나중에 16 진수 표현으로 변환합니다. 아래의 방법을 사용하고 있습니다.자바에서 매우 큰 값을주는 16 진수 정수?
StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(nextChar));
if (sb.length() < 2) {
sb.insert(0, '0'); //pad with leading zero if needed
}
String hexChar = sb.toString();
System.out.println("\n\n hex value is "+hexChar +" "+"Int value is:"+nextChar);
코드가 정상적으로 작동합니다. 오직 하나 또는 두 개의 데이터를 얻었습니다. 보통 16 진수로 변환 한 후 BE 또는 A9 중 하나이지만 ffdd를 얻고 정수 값은 65533입니다. 변환 방법이 잘못되었거나 입력 값이 자체에서 가져올 수 있습니까? 그 값?
죄송합니다. int nextChar = 0; ((nextChar = r.read())! = -1) – user5313398
r에 대한 설정은 다음과 같습니다. r BufferedReader (new InputStreamReader (receivedSocketConn1.getInputStream())); 그것은 nextChar에 그것을 잡아 정수 원인을 반환합니까? – user5313398
이것은 Java가 unsigned int를 사용하지 않는다는 사실과 관련 될 수 있습니까? 따라서 169 (0xA9)의 값을 가지며 byte 유형의 변수에 저장되는 경우 이는 169가 아니라 -87입니다. int로 승격하면 -87이됩니다. 16 진수로 변환하면 FFFFFFA9와 같은 것이됩니다. 출력물을 게시하고 어느 것이 잘못되었는지 알려주시겠습니까? – Teto