2009-12-23 2 views
0

Mon problème est: J'essaie de convertir mes valeurs CGFloat à une valeur entière et de les ajouter à un NSMutableArray.Comment puis-je convertir CGFloat en une valeur entière (SDK iPhone)

Par exemple;

CGFloat x = ship.center.x

// convertir en nombre entier x ?

P.S.:Après cela, je vais envoyer ces valeurs à un autre iPhone avec Bluetooth. Mais d'abord je dois résoudre ce problème. Si quelqu'un sait comment envoyer un tableau de données à un autre iPhone avec Bluetooth, il fonctionne également :)

Répondre

1

Premièrement, pourquoi voulez-vous convertir en int? CGfloat est juste un typedef pour float, et peut être envoyé tel quel, surtout si vous savez que vous envoyez votre iPhone à l'iPhone, car ils utiliseront la même représentation de la mémoire pour les flotteurs. Si vous avez encore besoin de le faire pour une raison quelconque ...

// 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 stocke uniquement les objets, vous pouvez utiliser un simple tableau à la place:

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); 

Je ne l'ai jamais programmé avec un Pile Bluetooth, donc je ne peux pas vous aider là-bas. Pardon.

Questions connexes