2017-01-04 4 views
1

Я хочу получить память слотов памяти и преобразовать ее в GB. Я использую класс WMI, Win32_PhysicalMemory со свойством Capacity.Проблема преобразования типов WMI

Код:

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

При использовании функции Qt -

QString::fromWCharArray(ramCapacity.bstrVal); 

я получаю надлежащий объем оперативной памяти Слоты памяти в байтах, но я не могу преобразовать его в ГБ. Я попытался использовать другую функцию:

QString::number(ramCapacity.uintVal), 

он работает, но отображает неправильную сумму памяти. Пожалуйста, помогите решить эту проблему. Заранее спасибо.

+1

'но я не могу преобразовать его в GB' почему? –

+0

При преобразовании в GB: userRAMCapacity = QString :: fromWCharArray (ramCapacity.bstrVal)/(1024)/(1024)/(1024); Ошибка: ошибка: C2678: двоичный '/': оператор не найден, который принимает левый операнд типа «QString» (или нет приемлемого преобразования) – Cobra91151

+0

именно потому, что вы пытаетесь преобразовать sting, конвертировать его на число сначала, а затем сделать остальную часть математики –

ответ

1

QString имеет toInt() метод, который вам нужно будет применить, прежде чем делать какие-либо математику:

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

Я попробовал ваш код, но в консоли при печати с помощью функции QDebug(), результат «\ u0000» «\ u0000» «\ u0000» «\ u0000» – Cobra91151

+0

при печати, что ? –

+0

Код: QString userRAMCapacity = QString :: fromWCharArray (ramCapacity.bstrVal) .toInt()/(1024)/(1024)/(1024); qDebug() << userRAMCapacity; – Cobra91151