【问题标题】:WMI types conversion issueWMI 类型转换问题
【发布时间】:2017-01-04 20:22:09
【问题描述】:

我想获取 ram 插槽内存并将其转换为 GB。我使用具有属性容量的 WMI、Win32_PhysicalMemory 类。

代码:

QString userRAMCapacity = QString::fromWCharArray(ramCapacity.bstrVal);

使用 Qt 函数时 -

QString::fromWCharArray(ramCapacity.bstrVal); 

我获得了适当的 ram 插槽内存容量(以字节为单位),但我无法将其转换为 GB。我尝试使用另一个功能 -

QString::number(ramCapacity.uintVal), 

它可以工作,但显示错误的内存量。请帮助解决此问题。提前致谢。

【问题讨论】:

  • but I can't convert it to GB 为什么?
  • 转换为GB时:userRAMCapacity = QString::fromWCharArray(ramCapacity.bstrVal) / (1024) / (1024) / (1024);错误:错误:C2678:二进制“/”:未找到采用“QString”类型左侧操作数的运算符(或没有可接受的转换)
  • 没错,因为您正在尝试转换字符串,所以先将其转换为数字,然后再进行其余的数学运算
  • 我知道我使用了错误的类型,但是如何转换为数字?当使用 QString::number(ramCapacity.uintVal) / (1024) / (1024) / (1024) 它显示不正确的值。
  • 在下面查看我的答案

标签: c++ qt wmi ram windows-applications


【解决方案1】:

QString 有 toInt() 方法,你需要在做任何数学运算之前应用它:

auto result = QString::fromWCharArray(ramCapacity.bstrVal). toLongLong() / (1024) / (1024) / (1024);

【讨论】:

  • 我试过你的代码,但是在控制台中当我使用 qDebug() 函数打印时,结果是 "\u0000" "\u0000" "\u0000" "\u0000"
  • 什么时候打印?
  • 代码:QString userRAMCapacity = QString::fromWCharArray(ramCapacity.bstrVal).toInt() / (1024) / (1024) / (1024); qDebug()
  • 但不是你得到的QString,它的int,声明为int
  • int ramCapacity_GB = QString::fromWCharArray(ramCapacity.bstrVal).toInt() / (1024) / (1024) / (1024); qDebug() i86.fastpic.ru/big/2017/0104/6a/…
猜你喜欢
  • 2011-11-17
  • 2012-10-01
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多