我在我的C++应用程序中使用GameKit进行网络连接(创建了一个用于管理GameKit网络的Objective-C类),但问题在于GameKit使用NSString(而不是C++类型) (的peerID)。我已经测试了很多GameKit,并且在我的练习中,peerID始终是一个数字(例如754569949)。将peerID简单地转换为uint32_t安全吗?有没有peerID不是数字的情况?我可以将GameKit的peerID投射到uint32_t
0
A
回答
0
我看到你的问题的几个部分:1)从peerID
字符串解析int; 2)维护内部ID和peerID
之间的关联。
如果你需要得到peerID
到你的C++代码,然后能够将其转换回NSString
用的GameKit框架的使用,你不应该做出peerID
的内容比官方文档提供任何更多的假设。
换句话说,如果您绝对必须使用整数,请提供一种将peerID
s映射到您的内部标识符的方法。但请保留peerID
并与您的标识符相关联,以便能够以其他方式映射 - 从您的ID返回到NSString
。
制作NSString -> uint32_t
的地图可能是一种解决方法。
以上主要介绍了我在第一句中提到的第二部分。现在让我们考虑一下是否保存为将peerID
解析为整数。
如果你需要保证一个特定peerID
总是映射到相同uint32_t
,你要么承担peerID
代表一个数字,将始终融入uint32_t
,或者你计算字符串的哈希值。这两种方法都存在问题。如此短的散列可能会在实际使用中发生冲突。另一方面,当苹果决定延长其peerID
以包括字母时,系统可能会有一天停顿。
所以我不能为你做出决定,我只是试图展示你可能想要考虑的可能性。我强烈建议您找到一种方法来使用原始peerID
,可能转换为C++字符串类型。
0
的问题是,与其他代码部分的兼容性,我需要通过整识别客户,不串
如果你要得到一个整数这些字符串,在没有任何保证它将始终是一个数字,只需构建一个已知ID的表并为它们分配索引。
57483829 => 0
42937422 => 1
3333fghh => 2
您就可以使用两个std::map
s到快两个之间转换。
只需将NSString
转换为更易于使用C++的字符串即可。或者,首先进行翻译并在Objective-C中维护索引,然后可以为C++代码提供索引。
相关问题
- 1. 你可以将LPTSTR投射到BSTR吗?
- 2. C来自指针投射到uint32_t的一个指向包含uint32_t的
- 3. 将我的类投射到JSONObject
- 4. 如何在gamekit蓝牙连接中获得自己的peerID?
- 5. 我可以有条件地投射到不同的类型吗?
- 6. PHP投射到我的
- 7. 我可以依靠sizeof(uint32_t)== 4吗?
- 8. Android:有没有什么办法可以将ImageView投射到RelativeLayout
- 9. 将RadioButton投射到ViewGroup
- 10. 将ActiveExplorer投射到ActiveInspector
- 11. 将IList投射到IEnumerable
- 12. 将getResultList投射到ResultSet
- 13. 将CFDictionaryRef投射到NSDictionary?
- 14. 将IOrderedEnumerable投射到ICollection
- 15. 将NSWindow投射到NSPanel
- 16. 将QDialog投射到QWidget
- 17. 将ListBox.SelectedObjectCollection投射到ListBox.ObjectCollection?
- 18. 将ObjectHandle投射到UserControl
- 19. 将FirebaseListObservable投射到对象
- 20. GeckoFX:将GeckoNode投射到GeckoHTMLElement
- 21. 将DataGrid行投射到DataGridCellPresenter
- 22. 将'int'投射到'Random'
- 23. 将元素投射到FlowPanel?
- 24. 将LPCWSTR投射到LPCSTR
- 25. 将SqlDataType投射到C#Enum
- 26. 将XmlMessageFormatter投射到IMessageFormatter
- 27. 将LinkedListNode投射到对象
- 28. 将int投射到指针?
- 29. 将对象投射到JTable?
- 30. 将WIN32_FIND_DATA投射到LPVOID
投射会给你在内存中的地址。只需将NSString转换为可以使用的东西?我认为这给你一个char * http://stackoverflow.com/questions/2216266/printing-an-nsstring – 2013-05-01 22:18:31
与演员我的意思是词汇演员(编辑后)。问题是,为了兼容其他代码部分,我需要通过整数标识客户端,而不是字符串 – 2013-05-01 22:24:11
如果问题是'NSString'不是C++类型,那么可以使用'std :: string' – 2013-05-01 22:26:01