非常多的標題,我使用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