如何将CGFloat转换为整数值(iPhone SDK)

时间:2009-12-23 08:11:02

标签: iphone-sdk-3.0

我的问题是:我正在尝试将我的CGFloat值转换为整数值,而不是将它们添加到NSMutableArray。

例如;

CGFloat x = ship.center.x

//将x转换为整数 ?

P.S。:之后,我会将这些值发送到另一部带蓝牙的iPhone。但首先我必须解决这个问题。如果有人知道如何使用蓝牙将阵列数据发送到另一部iPhone,它也可以工作:)

1 个答案:

答案 0 :(得分:1)

首先,为什么要转换为int? CGfloat只是float的typedef,可以按原样发送,特别是如果你知道你将iPhone发送到iPhone,因为他们将使用相同的内存表示浮动。如果由于某种原因你仍然需要这样做......

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

我从未编程过蓝牙堆栈,所以我无法帮助你。遗憾。