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