Преобразование NSData в Java float? - PullRequest
0 голосов
/ 24 июня 2010

Итак, я пишу приложение для своего iphone, которое подключается к моему компьютеру, на котором запущено приложение Java, используя сокет.Но когда я передаю данные, я должен отправить объект NSData со своего iphone, и, конечно, программа Java не знает, как его интерпретировать.Как я могу это исправить?Мне нужно отправить 3 значения с плавающей запятой между двумя приложениями.

Любая помощь будет оценена ...

Ответы [ 2 ]

1 голос
/ 24 июня 2010
float a,b,c;
NSString *s = [NSString stringWithFormat:@"%g,%g,%g",a,b,c];
NSData *d = [s dataWithEncoding:NSUTF8StringEncoding];
// send d

...

byte[] b = ...; // read data
String s = new String( result );
String[] ss = s.split( "," );
float a = Float.parseFloat( ss[0] );
float b = Float.parseFloat( ss[1] );
float c = Float.parseFloat( ss[2] );
0 голосов
/ 24 июня 2010

Вы сказали, что у есть для отправки объекта NSData - почему?

Если можете, отправьте его как String и выполните Float.parseFloat(str); на стороне Java?

Если вам нужно отправить три значения в одном, найдите разделитель, чтобы поставить между ними, например ;, и выполните str.split(";"); в Java.Это даст вам String[], и вы сможете проанализировать каждое значение, используя метод, упомянутый выше.Упрощенно, что-то вроде этого:

String delimitedFloats = readFloatsFromSocket();
for (String floatStr : delimitedFloats.split(";"))
{
    float f = Float.parseFloat(floatStr);
    doSomething(f);
}

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я даже не знаю, что такое NSData, поэтому, пожалуйста, извините, если я далеко или пропускаю что-то очевидное.

...