Конвертировать NSData (в формате plist) в строку Java - PullRequest
1 голос
/ 02 января 2011

Эй, ребята, у меня есть приложение Какао, которое отправляет NSDictionary по сети на различные устройства.Ранее он отправлялся только на другие компьютеры Mac, поэтому использование NSKeyedArchiver для записи в объект NSData работало нормально, с другой стороны, я использовал бы NSKeyedUnarchiver.необходимо преобразовать данные plist, которые поступают по сети, например:

< 3c3f786d 6c207665 7273696f ... >

в простую строку Java.(Так что я могу читать его с помощью синтаксического анализатора XML.) Здесь, похоже, ответили обратное: [https://stackoverflow.com/questions/3774872], но я все еще не могу понять, в каком порядке я должен выполнять кодирование / декодирование. 1

1 Ответ

2 голосов
/ 02 января 2011

«Строка», которую вы видите при передаче по сети, на самом деле является файлом XML в том виде, в каком он отображается в необработанном виде.

Если вы видите его как массив массива * 1003, он можетбыть переданным конструктору java.lang.String:

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

и оттуда в синтаксический анализатор XML.

Если фактические байты, передаваемые по сети, равны '<', ' ','3', 'c' и т. Д., То что-то непонятное на стороне, отправляющей данные, потому что кажется, что перед отправкой данные преобразуются в NSString с помощью метода -description данных.NSKeyedUnarchiver не достаточно умен, чтобы иметь дело с такой строкой, поэтому я не подозреваю, что это так, но если это так, довольно просто преобразовать это обратно в необработанный поток байтов и затем использовать вышеупомянутый Java-конструкторчтобы вернуть вашу XML-строку.

...