【问题标题】:QT Binary IO, read by javascriptQT 二进制 IO,由 javascript 读取
【发布时间】:2014-01-10 02:24:29
【问题描述】:

是否可以获取从此函数创建的文件并通过例如 javascript 读取或解密并从文件中提取单词“test”并回显到浏览器中?

以下将文件保存为二进制,不可打印的字符。

void Save(){


    QString text = "<?xml version='1.0'?><root><child>test</child></root>";

    QFile file("/home/user/Documents/teststuff/save.txt");
    if(!file.open(QIODevice::WriteOnly)){
        qDebug() << "Unable to write to file!";
        return;
    }

    QDataStream out(&file);
    out.setVersion(QDataStream::Qt_4_8);

    out << text;

    file.flush();
    file.close();

}

编辑:更多信息:

我希望它在 html/javascript 中读取。让我首先告诉你我想要完成。我有一个程序可以保存和读取二进制信息。我不希望该数据是可编辑的,因此将其保存为(不可打印的)二进制文件,但我希望将该文本、XML 输出到网页中,以便用户可以查看/打印。

【问题讨论】:

  • 您有什么顾虑?
  • 我想用javascript读取二进制文件并能够输出到浏览器。
  • 那么,你想问如何读取一个xml文件,或者你如何在浏览器中显示读取的文件?你自己试过什么
  • xml 文件被 QT 加密,当被文本编辑器读取时,它将显示为不可打印的字符。我想知道它是否可以解密并被客户端html资源读取,例如javascript

标签: javascript html qt binary


【解决方案1】:

好的,所以..我的问题是:是否有可能获取从此函数创建的文件并被 javascript 读取或解密,并从文件中提取单词“test”并回显进入浏览器?

是的,可以读取二进制数据(参见下面证明这一点的代码),用 Qt xml 阅读器解析,然后在浏览器中显示。

main.cpp

#include <QString>
#include <QFile>
#include <QDebug>

void save()
{
    QString text = "<?xml version='1.0'?><root><child>test</child></root>";

    QFile file("save.txt");
    if (!file.open(QIODevice::WriteOnly)) {
        qDebug() << file.errorString();
        return;
    }

    QDataStream out(&file);
    out.setVersion(QDataStream::Qt_4_8);

    out << text;

    file.flush();
    file.close();

}

void load()
{
    QFile file("save.txt");
    if (!file.open(QIODevice::ReadOnly)) {
        qDebug() << file.errorString();
        return;
    }

    QDataStream in(&file);
    in.setVersion(QDataStream::Qt_4_8);

    QString text;
    in >> text;

    qDebug() << "The whole text:" << text;

    QXmlStreamReader xml(text);

     while (!xml.atEnd()) {
         xml.readNext();
         if (xml.name() == QStringLiteral("child") && xml.tokenString() == QStringLiteral("StartElement")) {
             xml.readNext();
             qDebug() << "Child text found:" << xml.text();
         }
     }

    file.close();
}

int main()
{
    save();
    load();
    return 0;
}

输出

g++ -Wall -fPIC -I/usr/include/ -I/usr/include/qt -I/usr/include/qt/QtCore -lQt5Core main.cpp && ./a.out

"<?xml version='1.0'?><root><child>test</child></root>"
Child text found: "test"

您关于在网络上输出 xml 的附加问题没有多大意义。您最终应该输出一个 html。无论如何,你的问题太宽泛了,有几个不同的子问题,不幸的是,你似乎没有付出任何努力自己解决它。

【讨论】:

  • 问题是,我不想在 QT 中读回它。我希望它在 html/javascript 中读取。让我首先告诉你我想要完成。我有一个程序可以保存和读取二进制信息。我不希望该数据是可编辑的,因此将其保存为(不可打印的)二进制文件,但我希望将该文本、XML 输出到网页中,以便用户可以查看/打印。
  • “我想知道它是否可以解密”-> 我回答了。其余的与 Qt 无关。事实上,你通常在网络世界中显示 html,所以我真的不明白你为什么要使用这个 XML。您的第二个嵌入式问题对我来说没有任何意义。
  • 被javascript解密,而不是qt。假设字符串不是 xml.to 开头.. 假设它只是 qt 创建的二进制文件中的单词 test。 javascript可以读取qt创建的二进制文件吗?
  • 这里的 Qt 真的没有什么神奇之处。 Qt 只是在 Posix 上使用带有二进制写入参数的 C 函数。如果您可以读取由任何二进制低级编写器编写的任何二进制文件,则 Javascript 应该可以很好地阅读。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 2021-12-04
  • 2022-01-11
  • 1970-01-01
  • 2018-12-20
  • 2013-05-22
相关资源
最近更新 更多