qt中,.dat文件内已经写入十六进制数据,如何读取?

创建了.dat文件,存入了0x00-0xFF的十六进制数据。我想在qt中实现将.dat文件中的数据读取出来,并且放在unsigned char类型的数组中。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7612595
  • 这篇博客也不错, 你可以看下(精准解决,不成功找我)qt应用程序无法正常启动(0xc0000007b)
  • 除此之外, 这篇博客: Qt 实现一个任意变量的写入写出到本地保存为 ****.dat文件,实现软件自动保存中的 实现: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •   DatUtil类实现保存和读取本地文件。

    class DatUtil: public QObject {
        Q_OBJECT
      public:
        static bool SaveDatFile(const QVariant &dat, const QString &file_name);
        static bool ReadDatFile(QVariant &dat, const QString &file_name);
    };
    
    /**
     * @brief DatUtil::SaveDatFile 本地保存dat
     * @param dat
     * @param file_name
     * @return
     */
    bool DatUtil::SaveDatFile(const QVariant &dat, const QString &file_name) {
        QFile file(file_name);
        bool is_ok = file.open(QIODevice::WriteOnly | QIODevice::Truncate);
        if (is_ok == true ) {
            QDataStream stream(&file);
            stream << dat;
            file.close();
            return true;
        }
        return false;
    }
    
    /**
     * @brief DatUtil::ReadDatFile 本地读取dat
     * @param dat
     * @param file_name
     * @return
     */
    bool DatUtil::ReadDatFile(QVariant &dat, const QString &file_name) {
        dat.clear();
        if(FileUtil::FileIsExist(file_name)) {
            QFile file (file_name);
            bool isOk = file.open(QIODevice::ReadOnly);
            if (isOk == true ) {
                QDataStream stream(&file);
                stream >> dat;
                file.close();
                return true;
            }
            return false;
        }
        return false;
    }
    
    bool FileUtil::FileIsExist(const QString &strFile) {
        QFile tempFile(strFile);
        return tempFile.exists();
    }
    

QByteArray 有一个toHex 然后 toInt(16);