Как я могу преобразовать CGFloat в целочисленное значение (iPhone SDK) - PullRequest
0 голосов
/ 23 декабря 2009

Моя проблема: я пытаюсь преобразовать свои значения CGFloat в целочисленное значение, а затем добавить их в NSMutableArray.

Например;

CGFloat x = ship.center.x

// преобразовать x в целое число

P.S .: После этого я отправлю эти значения на другой iPhone с Bluetooth. Но сначала я должен решить эту проблему. Если кто-нибудь знает, как отправить массив данных на другой iPhone с Bluetooth, это также работает :)

1 Ответ

1 голос
/ 23 декабря 2009

Во-первых, почему вы хотите конвертировать в int? CGfloat - это просто typedef для float, и его можно отправлять «как есть», особенно если вы знаете, что отправляете iPhone на iPhone, поскольку они будут использовать одинаковое представление памяти для float. Если вам все еще нужно сделать это по какой-то причине ...

// Choose constants m and c so that the resulting integers
// span as much of the range (INT_MIN, INT_MAX) as possible,
// thus minimising aliasing effects. Also consider using
// long long (64-bit integers).
int x = (int)(m*ship.center.x+c)

NSMutableArray хранит только объекты, поэтому вы можете вместо этого использовать простой массив:

int* arr = malloc(sizeof(x)*ships.length);
for (int i = 0; i < ships.length; i++) {
    arr[i] = (int)ships[i].center.x;
}
send_data(arr, sizeof(x)*ships.length);

Я никогда не программировал стек Bluetooth, поэтому не могу вам помочь. К сожалению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...