Encoding 为基于回合的游戏数据编码向NSData添加更多变量
我正在制作一个基于回合的游戏,我将一个整数变量“points”存储到NSData中,然后由gamecenter存储。到目前为止,我的做法如下: NSString*newString=[[NSString alloc]initWithFormat:@“%i”,points] NSData*data=[newString dataUsingEncoding:NSUTF8StringEncoding] 我需要将更多变量存储到NSData*数据中。我该怎么做 我现在知道,您可以通过以下方式在字符串*newString中存储2个整数: NSString*newString=[[NSString alloc]initWithFormat:@“%i,%i”,点,其他整数]Encoding 为基于回合的游戏数据编码向NSData添加更多变量,encoding,nsdata,game-center,Encoding,Nsdata,Game Center,我正在制作一个基于回合的游戏,我将一个整数变量“points”存储到NSData中,然后由gamecenter存储。到目前为止,我的做法如下: NSString*newString=[[NSString alloc]initWithFormat:@“%i”,points] NSData*data=[newString dataUsingEncoding:NSUTF8StringEncoding] 我需要将更多变量存储到NSData*数据中。我该怎么做 我现在知道,您可以通过以下方式在字符串*ne
但是,我不知道如何解码,因为字符串将存储为上一个字符串后面的一个整数值。无论如何,这可能不是最好的实施方案,因此任何建议都将不胜感激。您可以这样做:
// for encoding
int32_t points = ...;
int32_t otherInteger = ...;
NSMutableData *data = [NSMutableData data];
[data appendBytes:&points length:sizeof(int32_t)];
[data appendBytes:&otherInteger length:sizeof(int32_t)];
.
.
.
// for decoding
NSData *data = ...;
int32_t points;
int32_t otherInteger;
int index = 0;
NSRange range;
range = NSMakeRange(index, sizeof(int32_t));
[data getBytes:&points range:range];
index += sizeof(int32_t);
range = NSMakeRange(index, sizeof(int32_t));
[data getBytes:&otherInteger range:range];
index += sizeof(int32_t);
.
.
.