非常多的标题,我使用Gamekit在结构中发送一个int,在接收端,其他设备获取它。 在64位cpus(iPhone 5S及以上版本)数量收到罚款。但是,当一个iPhone 5获得它(32位CPU)的int被接收为0.什么是正确的方式?如何在32位和64位处理器之间发送int iOS
我试过发送作为NSInteger和结果是一样的。
我必须添加我有这个问题与u_int_32t: 当设备连接时,每个设备交易随机数。这些数字决定哪个球员开始,我用这个u_int_32t,然而,32位的CPU仍然收到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示出:接收的随机数:0
感谢您的回复。如果您发现为什么发送为u_int32_t,则在另一端收到0,请查看编辑后的问题。 – Oscar
什么是'消息'?如果在结构中切换“Message”和“u_int32_t”的顺序会怎样? –
消息是另一个结构,它帮助我知道接收到的是一个RandomNumber消息。 – Oscar