开发者

Int Showing as Long Odd Value

开发者 https://www.devze.com 2023-02-05 01:58 出处:网络
I am trying to send an int in my iphone game for game center multiplayer. The integer is coming up and appearing as an odd long integer value rather than the expected one.

I am trying to send an int in my iphone game for game center multiplayer.

The integer is coming up and appearing as an odd long integer value rather than the expected one.

I have this in my .h:

typedef enum
{
 kPacketTypeScore,
} EPacketTypes;

typedef struct
{
 EPacketTypes type;
 size_t size;
} SPacketInfo;

typedef struct
{
 SPacketInfo packetInfo;

 int score;
} SScorePacket;

Then .m:

Sending data:

scoreData *score = [scoreData sharedData];

  SScorePacket packet;
  packet.packetInfo.type = kPacketTypeScore;
  packet.packetInfo.size = sizeof(SS开发者_运维知识库corePacket);
  packet.score = score.score;

  NSData* dataToSend = [NSData dataWithBytes:&packet length:packet.packetInfo.size];
  NSError *error;
  [self.myMatch sendDataToAllPlayers: dataToSend withDataMode: GKMatchSendDataUnreliable error:&error];
  if (error != nil)
  {
   // handle the error
  }

Receiving:

SPacketInfo* packet = (SPacketInfo*)[data bytes];

 switch (packet->type)
 {
  case kPacketTypeScore:
  {
   SScorePacket* scorePacket = (SScorePacket*)packet;

   scoreData *score = [scoreData sharedData];

   [scoreLabel setString:[NSString stringWithFormat:@"You: %d Challenger: %d", score.score, scorePacket]];

   break;
  }

  default:
   CCLOG(@"received unknown packet type %i (size: %u)", packet->type, packet->size);
   break;
 }

Any ideas? Thanks.


Try:

[scoreLabel setString:[NSString stringWithFormat:@"You: %d Challenger: %d", score.score, scorePacket->score]]; // Note: scorePacket.score

You're were trying to print a pointer-to-the-scorePacket, not the score in-the-packet.


Needed scorePacket->score rather than scorePacket. Printing the wrong thing.

0

精彩评论

暂无评论...
验证码 换一张
取 消