나는 quake 3 엔진 마스터 서버 (이 경우 cod2 마스터 서버)에서 서버 목록을 검색하는 도구를 빌드 중입니다. 이러한 마스터 서버는 IP 포트 정보가 포함 된 큰 문자열로 응답합니다. 여기에있는 ip는 4 문자이며 각 문자는 숫자 (1-255)로 변환되어야합니다. 내가 이것을 시도 할 때 128 이상의 숫자는이 유니 코드 대체 문자 (65533 또는 fffd)로 변환됩니다. PHP에서 함수와 같은 문자열이 모든 작품Java cant가 vars에 대한 올바른 값을 얻음
System.out.println("ip: "+String.format("%02x", (int)r.charAt(i+1))+"."+String.format("%02x", (int)r.charAt(i+2))+"."+String.format("%02x", (int)r.charAt(i+3))+"."+String.format("%02x", (int)r.charAt(i+4)));
System.out.println("ip: "+(int)r.charAt(i+1)+"."+(int)r.charAt(i+2)+"."+(int)r.charAt(i+3)+"."+(int)r.charAt(i+4));
:
나는 몇 가지를 시도 내 자바는 유니 코드를 사용하는 문제가있을 것 같아요ord(char);
을하고, 나는 그것이 ascii (또는 확장 아스키, 확실하지 않음)를 사용해야한다고 생각한다.
[8N] < <이 4 개 문자 번역 올바른
ZH < <를 heres 하나 내가 txt 파일에 기록하면 잘못이다, 난 그냥 캔트 내 콘솔에서 바로 문자를 복사하고 난 각 텍스트 편집기로 완전히 다른 결과를 얻을 수 있습니다. 따라서
모든 솔루션?
어떻게 문자열을 만들려면 어떻게해야합니까? 서버의 인코딩과 일치하는 인코딩을 제공합니까? – Thomas
DatagramPacket을 byte [] 버퍼와 함께 사용하고 retreived 메시지를 문자열에 넣었습니다. 인코딩을 제공하지 않습니다. – Robin
어떻게 "모르겠습니다."- API를 살펴볼 것을 제안합니다. 그때. 'String (byte bytes [], Charset charset)'과 같은 생성자가 있습니다. charset/encoding을 전달하지 않으면 시스템 기본값이 사용되며 이는 서버에서 사용되는 것이 아닙니다 (모든 IO/변환 등의 작업에서 charset을 정의하는 것이 좋습니다). 그러나 Jorn의 접근 방식은 어쨌든 더 나은 방법입니다. 왜냐하면'byte [] '를 이미 얻었 으면'String' 간접 참조를 사용할 필요가 없기 때문입니다. – Thomas