2013-05-05 26 views

Odpowiedz

33

Otwórz plik za pomocą QFile i wywołaj readAll(), aby pobrać jego zawartość do QByteArray. Następnie użyj tego dla połączenia QCryptographicHash::hash(const QByteArray& data, Algorithm method).

W Qt5 można użyć addData():

// Returns empty QByteArray() on failure. 
QByteArray fileChecksum(const QString &fileName, 
         QCryptographicHash::Algorithm hashAlgorithm) 
{ 
    QFile f(fileName); 
    if (f.open(QFile::ReadOnly)) { 
     QCryptographicHash hash(hashAlgorithm); 
     if (hash.addData(&f)) { 
      return hash.result(); 
     } 
    } 
    return QByteArray(); 
} 
+3

Udało się, po prostu musiałem dodać .toHex(). Dzięki! – user2282405

+12

readAll() wczytuje wszystko do pamięci, nie jest dobrym pomysłem na duże pliki. Wolę używać addData (& file). –

+2

@FrankOsterfeld Zgadzam się, upraszczałem, aby uzyskać punkt przekreślenia - to OP musi być pewien, że nie spowoduje awarii systemu. – cmannett85