- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的应用程序需要将大量的 PSID
转换为友好的域\用户名字符串。
这可以通过 LookupAccountSid
来完成.不幸的是,这个 API 需要在很多地方四处嗅探以解析 SID,包括可能的网络调用。因此我想缓存以前看到的 SID。
我目前正在使用哈希表 (CMap) 执行此操作,该哈希表以 SID 的字符串表示形式为键,即 ConvertSidToStringSid
的结果.这很好用,但我想知道是否有一个众所周知、高效、可靠的 SID 哈希例程,这样我就不必转换为字符串?
可能将 SID 复制到字节缓冲区并散列缓冲区?或者通过其他 API 遍历 SID 本身的结构?
最佳答案
可以存储SID结构的字节。 SID 结构的长度是可变的,因此您必须首先使用 GetLengthSid 检索它功能。
这是我使用的 Qt 实现,用于将值存储在 QByteArray 中.
PSID sid = ...
// retreive the length in bytes of the sid structure
DWORD sidSize = GetLengthSid(sid);
// check that sidSize fits into QByteArray::fromRawData
Q_ASSERT(sidSize <= INT_MAX);
QByteArray baSid = QByteArray::fromRawData((char *) sid, sidSize);
QByteArray::fromRawData
仅包装数据而不进行复制。如果你想要一个拷贝,使用构造函数QByteArray::QByteArray(const char *data, int size = -1)
。
然后您可以将字节数组存储在任何 Qt 容器中,例如 QSet .
请注意 GetLengthSid
返回 DWORD
(在我的系统上定义为 unsigned long
)和 fromRawData
接受一个 int
。我在那次对话中从未遇到过任何问题,但我包含了一个测试,该值不是太大,INT_MAX
宏来自 climits
header 。
如果字节数组是从fromRawData
构造的,则可以使用constData
将字节数组轻松转换回PSID
。
PSID sid = (PSID) baSid.constData();
我没有在未构建 fromRawData
时测试 constData
,但文档指出:
The data is '\0'-terminated unless the QByteArray object was created from raw data.
不幸的是,这段代码依赖于 Qt 框架,但它也应该适用于其他容器,例如 std::vector
。
关于c++ - 高效可靠的 SID/PSID 散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35001367/
我的应用程序需要将大量的 PSID 转换为友好的域\用户名字符串。 这可以通过 LookupAccountSid 来完成.不幸的是,这个 API 需要在很多地方四处嗅探以解析 SID,包括可能的网络调
我尝试使用这篇文章中的信息:https://stackoverflow.com/a/251267/393087 我想出的代码是: HANDLE hToken; OpenProcessToken(Get
这是我的代码: window.fbAsyncInit = function() { FB.init({ appId: "xxx", xfbml: true, version
您好,我需要一些有关如何在执行帐户链接过程时检索页面范围 ID (PSID) 或发件人 ID 的指导。 文档建议了以下解决方案,但我不知道它如何适合我的 POST 方法或代码中的任何位置,以便我可以将
自从我开始为这个问题而苦苦挣扎已经一周了。 我想为 Facebook 机器人创建一个 webview,我只想获取用户的 psid。使用纯 javascript 一切顺利:我可以使用 window.ex
我们在 Facebook Messenger Platform 上有一个聊天机器人,我们想为管理员提供一个与特定用户聊天的 URL,例如:https://facebook.com//u/ 当前在 Fa
我只是对 Facebook 的 API (v2.10) 返回的 ID 的范围类型有点困惑。 我正在通过调用此端点来请求页面对话, $endpoint =/{PAGE_ID}/conversations
我是一名优秀的程序员,十分优秀!