本文整理汇总了C++中QByteArray::constEnd方法的典型用法代码示例。如果您正苦于以下问题:C++ QByteArray::constEnd方法的具体用法?C++ QByteArray::constEnd怎么用?C++ QByteArray::constEnd使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QByteArray
的用法示例。
在下文中一共展示了QByteArray::constEnd方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: compareMetaData
void compareMetaData(QByteArray data, const QString &expected, int otherFlags = 0)
{
QString decoded;
// needs to be in in one map, with the entry called "v"
data = "\xa1\x61v" + data;
{
CborParser parser;
CborValue first;
CborError err = cbor_parser_init(reinterpret_cast<const quint8 *>(data.constData()), data.length(), 0, &parser, &first);
QVERIFY2(!err, QByteArrayLiteral(": Got error \"") + cbor_error_string(err) + "\"");
err = parseOne(&first, &decoded, CborConvertAddMetadata | otherFlags);
QVERIFY2(!err, QByteArrayLiteral(": Got error \"") + cbor_error_string(err) +
"\"; decoded stream:\n" + decoded.toLatin1());
// check that we consumed everything
QCOMPARE((void*)first.ptr, (void*)data.constEnd());
}
QVERIFY(decoded.startsWith("{\"v\":"));
QVERIFY(decoded.endsWith('}'));
// qDebug() << "was" << decoded;
// extract just the metadata
static const char needle[] = "\"v$cbor\":{";
int pos = decoded.indexOf(needle);
QCOMPARE(pos == -1, expected.isEmpty());
if (pos != -1) {
decoded.chop(2);
decoded = std::move(decoded).mid(pos + strlen(needle));
QCOMPARE(decoded, expected);
}
}
示例2: reverse
QByteArray QCSP::reverse( const QByteArray &data ) const
{
QByteArray reverse;
for( QByteArray::const_iterator i = data.constEnd(); i != data.constBegin(); )
{
--i;
reverse += *i;
}
return reverse;
}
示例3: loadRom
void CPU::loadRom(const std::string& h, const std::string& g, const std::string& f, const std::string& e)
{
QFile file_h(QString::fromStdString(h));
if(!file_h.open(QIODevice::ReadOnly))
{
error("Cannot open rom 1 : " + file_h.errorString().toStdString() + " : " +
std::to_string(file_h.error()));
}
QFile file_g(QString::fromStdString(g));
if(!file_g.open(QIODevice::ReadOnly))
{
error("Cannot open rom 2 : " + file_g.errorString().toStdString() + " : " +
std::to_string(file_h.error()));
}
QFile file_f(QString::fromStdString(f));
if(!file_f.open(QIODevice::ReadOnly))
{
error("Cannot open rom 3 : " + file_f.errorString().toStdString() + " : " +
std::to_string(file_h.error()));
}
QFile file_e(QString::fromStdString(e));
if(!file_e.open(QIODevice::ReadOnly))
{
error("Cannot open rom 4 : " + file_e.errorString().toStdString() + " : " +
std::to_string(file_h.error()));
}
QByteArray hContents = file_h.readAll();
std::copy(hContents.constBegin(), hContents.constEnd(),
m_state.mem.begin());
QByteArray gContents = file_g.readAll();
std::copy(gContents.constBegin(), gContents.constEnd(),
m_state.mem.begin() + 0x800);
QByteArray fContents = file_f.readAll();
std::copy(fContents.constBegin(), fContents.constEnd(),
m_state.mem.begin() + 0x1000);
QByteArray eContents = file_e.readAll();
std::copy(eContents.constBegin(), eContents.constEnd(),
m_state.mem.begin() + 0x1800);
}
示例4: decrypt
QByteArray QCSP::decrypt( const QByteArray &data )
{
HCRYPTKEY key = 0;
if( !CryptGetUserKey( d->h, AT_KEYEXCHANGE, &key ) )
return QByteArray();
QByteArray reverse;
for( QByteArray::const_iterator i = data.constEnd(); i != data.constBegin(); )
{
--i;
reverse += *i;
}
DWORD size = reverse.size();
bool result = CryptDecrypt( key, 0, true, 0, (BYTE*)reverse.data(), &size );
CryptDestroyKey( key );
return result ? reverse : QByteArray();
}
示例5: compareOne_real
void compareOne_real(const QByteArray &data, const QString &expected, int flags, int line)
{
compareFailed = true;
CborParser parser;
CborValue first;
CborError err = cbor_parser_init(reinterpret_cast<const quint8 *>(data.constData()), data.length(), 0, &parser, &first);
QVERIFY2(!err, QByteArray::number(line) + ": Got error \"" + cbor_error_string(err) + "\"");
QString decoded;
err = parseOne(&first, &decoded, flags);
QVERIFY2(!err, QByteArray::number(line) + ": Got error \"" + cbor_error_string(err) +
"\"; decoded stream:\n" + decoded.toLatin1());
QCOMPARE(decoded, expected);
// check that we consumed everything
QCOMPARE((void*)first.ptr, (void*)data.constEnd());
compareFailed = false;
}
示例6: sign
QByteArray QCSP::sign( int method, const QByteArray &digest )
{
ALG_ID alg = 0;
switch( method )
{
case NID_sha1: alg = CALG_SHA1; break;
case NID_sha256: alg = CALG_SHA_256; break;
case NID_sha384: alg = CALG_SHA_384; break;
case NID_sha512: alg = CALG_SHA_512; break;
case NID_sha224:
default: return QByteArray();
}
HCRYPTHASH hash = 0;
if( !CryptCreateHash( d->h, alg, 0, 0, &hash ) )
return QByteArray();
if( !CryptSetHashParam( hash, HP_HASHVAL, (BYTE*)digest.constData(), 0 ) )
{
CryptDestroyHash( hash );
return QByteArray();
}
DWORD size = 256;
QByteArray sig;
sig.resize( size );
if( !CryptSignHashW( hash, AT_SIGNATURE, 0, 0, (BYTE*)sig.data(), &size ) )
sig.clear();
CryptDestroyHash( hash );
QByteArray reverse;
for( QByteArray::const_iterator i = sig.constEnd(); i != sig.constBegin(); )
{
--i;
reverse += *i;
}
return reverse;
}
示例7: encodeURL
QString CGI::encodeURL(const QString &rawText)
{
QByteArray utf = rawText.toUtf8();
QString enc;
enc.reserve(utf.length()); // Make sure we at least have space for a normal US-ASCII URL
QByteArray::const_iterator it = utf.constBegin();
while (it != utf.constEnd()) {
const char ch = *it;
if (('A' <= ch && ch <= 'Z')
|| ('a' <= ch && ch <= 'z')
|| ('0' <= ch && ch <= '9')) {
enc.append(QLatin1Char(ch));
} else if (ch == ' ') {
enc.append(QLatin1Char('+'));
} else {
switch (ch) {
case '-': case '_':
case '(': case ')':
case '.': case '!':
case '~': case '*':
case '\'':
enc.append(QLatin1Char(ch));
break;
default:
ushort c1 = (*it & 0xF0) >> 4;
ushort c2 = (*it & 0x0F);
enc.append(QLatin1Char('%'));
enc.append(QLatin1Char(*(cgi_chars + c1)));
enc.append(QLatin1Char(*(cgi_chars + c2)));
break;
}
}
++it;
}
return enc;
}
示例8: if
//.........这里部分代码省略.........
}
else if (fast_name == "__TIME__")
{
__result->append('"');
__result->append(QTime::currentTime().toString().toUtf8());
__result->append('"');
continue;
}
}
__result->append(name_begin, name_end - name_begin);
continue;
}
if (! macro->isFunctionLike())
{
Macro *m = 0;
if (! macro->definition().isEmpty())
{
macro->setHidden(true);
QByteArray __tmp;
__tmp.reserve (256);
MacroExpander expand_macro (env);
expand_macro(macro->definition(), &__tmp);
if (! __tmp.isEmpty ())
{
const char *__tmp_begin = __tmp.constBegin();
const char *__tmp_end = __tmp.constEnd();
const char *__begin_id = skip_whitespaces (__tmp_begin, __tmp_end);
const char *__end_id = skip_identifier (__begin_id, __tmp_end);
if (__end_id == __tmp_end)
{
const QByteArray __id (__begin_id, __end_id - __begin_id);
m = env->resolve (__id);
}
if (! m)
*__result += __tmp;
}
macro->setHidden(false);
}
if (! m)
continue;
macro = m;
}
// function like macro
const char *arg_it = skip_whitespaces (__first, __last);
if (arg_it == __last || *arg_it != '(')
{
__result->append(name_begin, name_end - name_begin);
lines += skip_whitespaces.lines;
__first = arg_it;
continue;
}
示例9: main
int main(int argc, char *argv[])
{
if (argc != 4) {
std::cerr << "Usage: qpatch file.list oldQtDir newQtDir" << std::endl;
return EXIT_FAILURE;
}
const QByteArray files = argv[1];
const QByteArray qtDirPath = argv[2];
const QByteArray newQtPath = argv[3];
if (qtDirPath.size() < newQtPath.size()) {
std::cerr << "qpatch: error: newQtDir needs to be less than " << qtDirPath.size() << " characters."
<< std::endl;
return EXIT_FAILURE;
}
QFile fn(QFile::decodeName(files));
if (! fn.open(QFile::ReadOnly)) {
std::cerr << "qpatch: error: file not found" << std::endl;
return EXIT_FAILURE;
}
QStringList filesToPatch, textFilesToPatch;
bool readingTextFilesToPatch = false;
// read the input file
QTextStream in(&fn);
forever {
const QString line = in.readLine();
if (line.isNull())
break;
else if (line.isEmpty())
continue;
else if (line.startsWith(QLatin1String("%%")))
readingTextFilesToPatch = true;
else if (readingTextFilesToPatch)
textFilesToPatch.append(line);
else
filesToPatch.append(line);
}
foreach (QString fileName, filesToPatch) {
QString prefix = QFile::decodeName(newQtPath);
if (! prefix.endsWith(QLatin1Char('/')))
prefix += QLatin1Char('/');
fileName.prepend(prefix);
QFile file(fileName);
if (! file.open(QFile::ReadOnly)) {
std::cerr << "qpatch: warning: file `" << qPrintable(fileName) << "' not found" << std::endl;
continue;
}
const QByteArray source = file.readAll();
file.close();
int index = 0;
if (! file.open(QFile::WriteOnly | QFile::Truncate)) {
std::cerr << "qpatch: error: file `" << qPrintable(fileName) << "' not writable" << std::endl;
continue;
}
std::cout << "patching file `" << qPrintable(fileName) << "'" << std::endl;
forever {
int start = source.indexOf(qtDirPath, index);
if (start == -1)
break;
int endOfString = start;
for (; endOfString < source.size(); ++endOfString) {
if (! source.at(endOfString))
break;
}
++endOfString; // include the '\0'
if (index != start)
file.write(source.constData() + index, start - index);
int length = endOfString - start;
QVector<char> s;
for (const char *x = newQtPath.constData(); x != newQtPath.constEnd(); ++x)
s.append(*x);
const int qtDirPathLength = qtDirPath.size();
for (const char *x = source.constData() + start + qtDirPathLength;
x != source.constData() + endOfString; ++x)
s.append(*x);
//.........这里部分代码省略.........