2011-01-02 1 views
1

안녕하세요, 저는 다양한 장치에 네트워크를 통해 NSDictionary를 보내는 코코아 응용 프로그램이 있습니다. 이전에는 다른 Mac에서만 전송되었으므로 NSKeyedArchiver를 사용하여 NSData 객체에 쓰기 작업을 수행 한 결과, 다른 쪽에서 NSKeyedUnarchiver를 사용했습니다.Java 문자열로 NSData (plist 형식)을 변환하십시오.

지금 Windows 지원을위한 자바 구현을 쓰고, 내가 네트워크를 통해오고있다 PLIST 데이터를 변환 할 필요가 같은 : 간단한 자바 문자열에

< 3c3f786d 6c207665 7273696f ... > 

. (XML 파서로 읽을 수 있도록) 반대는 여기에 있습니다 : [https://stackoverflow.com/questions/3774872] 그러나 나는 아직도 인코딩/디코딩을 수행해야하는 순서에 대해 내 머리를 감쌀 수 없습니다. 1

답변

2

네트워크를 통해 전달되는 "문자열"은 실제로 XML 파일이 원시에 나타나는대로입니다.

byte[] theBytes = ...; 
String theString = new String(theBytes, "UTF-8"); 

을 그리고 거기에서 XML 파서 : 당신이 byte[] 배열 객체로 표시되는 경우

, 그것은 java.lang.String 생성자에 전달 될 수있다.

실제 바이트는 네트워크를 통해 전송되는 경우 '<', ' ', '3', 'c' 등 무언가의 불안정한는 데이터의 -description 방법 통해 NSString로 데이터를 변환하는 것으로 보이므로, 데이터를 송신 측에있는 그것을 보내기 전에. NSKeyedUnarchiver은 이러한 문자열을 처리 할만큼 똑똑하지 않습니다. 따라서이 경우에는 의심의 여지가 없지만, 그렇다면 원시 바이트 스트림으로 변환 한 다음 위의 Java 생성자를 사용하여 XML 문자열 다시.

+0

나는 데이터가 실제로 일반 텍스트 XML로 전선을 가로 질러 왔다는 점에서 정확하다고 믿는다. 그리고 설명 방법은 바이트를 뱉어 내고있다. 필자는 Windows 임포트의 일부분을 살피면서 다시 여러분에게 돌아올 것입니다. –