将 VARIANT 转换为无符号字符数组

Posted

技术标签:

【中文标题】将 VARIANT 转换为无符号字符数组【英文标题】:convert VARIANT to unsigned char array 【发布时间】:2011-05-12 14:24:18 【问题描述】:

我正在使用 Comm32(一个 activeX 控件)通过 GetInput() 方法获取来自串行端口的数据。 这个方法返回一个_variant_t,所以我需要把它转换成一个无符号字符数组。

当串行端口配置为 TextMode(这是数据输入被解释为字符串)时,将 Variant 转换为 BSTR,然后转换为 CString 可以按预期工作(代码不是我写的):

_variant_t x = m_comm32.GetInput();
CString cs = x.bstrVal;

但是,由于通过串口发送的数据实际上是二进制数据,当配置 comm32 将数据解释为二进制时,上面的示例代码没有给我有效的数据。 所以我想我需要把它转换成另一种格式(也许是无符号字符数组?这是我想测试的东西)。

我的问题是我快疯了,因为我找不到任何有关如何从 VARIANT 结构转换数据的详细信息。如何将变量转换为无符号字符数组??

【问题讨论】:

【参考方案1】:

InputMode 属性确定使用 Input 属性检索的数据类型。如果 InputMode 设置为 comInputModeText,则 Input 属性返回 Variant 中的文本数据。如果 InputMode 是 comInputModeBinary,则 Input 属性以 Variant 中的字节数组形式返回二进制数据。 (来自msdn)

要了解如何从安全数组中获取数据,请参阅示例 sample1 或 sample2

【讨论】:

以上是关于将 VARIANT 转换为无符号字符数组的主要内容,如果未能解决你的问题,请参考以下文章

将 std::string 转换为无符号字符数组

如何将十六进制字符串转换为无符号字符数组?

在 C 中从浮点数转换为无符号字符

将字符串转换为无符号字符 []

将特征矩阵转换为无符号字符 *

ESP8266 WebServer如何流式传输无符号字符