Преобразование плаваний к NSData и назад в Objective C

В приложении для iPhone я надеюсь преобразовывать плавание в NSData для него, чтобы быть отправленным по Bluetooth и затем преобразовал назад снова, когда это получено. У меня есть хорошо работающая часть Bluetooth, но когда я использую это для преобразования в NSData:

NSData *data = [[NSData alloc]init];

float z = 9.8574; // Get the float value, 9.8574 is just an example

[data getBytes:&z length:sizeof(float)];

Я не могу преобразовать его назад в плавание. Я попробовал несколько методов, но я задаюсь вопросом - ли это корректный способ закодировать плавание к NSData??

Спасибо

13
задан ingh.am 17 February 2010 в 14:50
поделиться

1 ответ

На самом деле вы можете идентифицировать его с данной версией. В вашем случае 9.0.30279.1 действительно VS2008 SP1, он повторно публикует библиотеки DLL Microsoft с этой версией (см. C :\Windows\Winsxs для всех).
Поэтому я предлагаю вам погуглить номер версии. Это должно дать вам правильную VS2008 версию.

-121--5044356-

Получите кого-нибудь, кто написал по крайней мере три системы, чтобы возглавить проект.

-121--2597094-

Вот как кодировать и декодировать float с NSData :

кодирование:

NSMutableData * data = [NSMutableData dataWithCapacity:0];
float z = ...;
[data appendBytes:&z length:sizeof(float)];

декодирование:

NSData * data = ...; // loaded from bluetooth
float z;
[data getBytes:&z length:sizeof(float)];

Пару вещей отметить здесь:

1. Для добавления элементов в объект данных после его создания необходимо использовать NSMuterData . Другой вариант - просто загрузить все данные в одном кадре:

NSData * data = [NSData dataWireBytes: & z length: sizeof (float)];

2. метод getBytes: length: предназначен для извлечения байт из объекта NSData , а не для копирования в него байтов.

28
ответ дан 1 December 2019 в 20:56
поделиться