我可以播放GameKit';s peerID到uint32\t 我在GC++中使用GAMEKIT进行网络应用(创建了一个用于管理GAMEKIT网络的ObjuleC类),但问题是GameKit uses NSString(不是C++类型)来识别对等体(PeRID)。我已经测试了很多GameKit,在我的实践中peerID总是一个数字(例如754569949)。用词汇将peerID投射到uint32\t安全吗?有没有皮里德不是数字的情况
问题是为了与代码的其他部分兼容,我需要用整数而不是字符串来标识客户机 如果您必须从这些字符串中获取一个整数,在没有任何保证的情况下,它将始终是一个数字,只需构建一个已知ID的表并为其分配索引即可我可以播放GameKit';s peerID到uint32\t 我在GC++中使用GAMEKIT进行网络应用(创建了一个用于管理GAMEKIT网络的ObjuleC类),但问题是GameKit uses NSString(不是C++类型)来识别对等体(PeRID)。我已经测试了很多GameKit,在我的实践中peerID总是一个数字(例如754569949)。用词汇将peerID投射到uint32\t安全吗?有没有皮里德不是数字的情况,c++,objective-c,gamekit,uint32,C++,Objective C,Gamekit,Uint32,问题是为了与代码的其他部分兼容,我需要用整数而不是字符串来标识客户机 如果您必须从这些字符串中获取一个整数,在没有任何保证的情况下,它将始终是一个数字,只需构建一个已知ID的表并为其分配索引即可 57483829 => 0 42937422 => 1 3333fghh => 2 您可以使用两个std::maps在两种表示之间快速转换 简单地将NString >转换为一个更为C++友好的字符串。另外,首先在Objto-C中进行翻译和维护索引,然后可以给C++代码一个索引。 <
57483829 => 0
42937422 => 1
3333fghh => 2
您可以使用两个std::map
s在两种表示之间快速转换
简单地将
peerID
s之间的关联
如果你需要将peerID
s映射到内部标识符的方法。但是,保持peerID与您的标识符保持关联,以便能够以另一种方式映射—从您的id返回到NSString
制作NSString->uint32\u t
的地图可能是一种方法
以上内容主要包括我在第一句中提到的第二部分。现在让我们考虑是否保存为解析“代码> PEEID 作为整数。
如果需要保证特定的peerID
始终映射到相同的uint32\u t
,则可以假定peerID
表示始终适合uint32\u t
的数字,或者计算字符串的哈希值。这两种方法都存在问题。如此短的散列在实际使用中可能会发生冲突。另一方面,有一天,当苹果决定将其peerID
s扩展到包含字母时,您的系统可能会停止运行
所以我真的不能为你做决定,我只是试着列出你可能想考虑的可能性。我强烈建议你找到一个使用原<代码> PeeID的方法,可能转换为C++字符串类型。只需将NSString转换为您可以使用的内容?我想这给了你一个char*和cast,我是指词法cast(编辑文章)。问题是,为了与代码的其他部分兼容,我需要用整数来标识客户端,而不是字符串,如果问题是代码> NString 不是C++类型,则可以使用<代码> STD::String < /C>