【发布时间】:2015-10-19 18:14:50
【问题描述】:
几乎是标题,我使用 Gamekit 在结构中发送一个 int,而在接收端另一个设备得到它。 在 64 位 CPU(iPhone 5S 及以上)之间,该号码可以正常接收。但是当 iPhone 5 得到它(32 位 cpu)时,int 被接收为 0。正确的方法是什么?
我尝试以 NSInteger 发送,结果是一样的。
我必须补充一下,我对 u_int_32t 有这个问题: 当设备连接时,每个设备都会交换随机数。这些数字决定了哪个玩家开始,我为此使用 u_int_32t,但是,32bit cpus 仍然接收 0。例如:
我声明
uint32_t _ourRandomNumber;
那么,_ourRandomNumber = arc4random();
然后以这样的结构发送数字。
typedef struct {
Message message;
uint32_t randomNumber;
} MessageRandomNumber;
使用这样的方法:
- (void)sendRandomNumber{
MessageRandomNumber message;
message.message.messageType = kMessageTypeRandomNumber;
message.randomNumber = _ourRandomNumber;
NSData *data = [NSData dataWithBytes:&message length:sizeof(MessageRandomNumber)];
[self sendData:data];
}
当32位cpu接收到然后在接收方法中:
Message *message = (Message*)[data bytes];
if (message->messageType == kMessageTypeRandomNumber) {
MessageRandomNumber *messageRandomNumber = (MessageRandomNumber*)[data bytes];
NSLog(@"Received random number:%d", messageRandomNumber->randomNumber);
NSLog 显示:Received random number:0
【问题讨论】:
标签: ios cocoa-touch game-center gamekit