Я хочу искать в двоичном файле с регулярным выражением. мой поиск удался в текстовых файлах, но не совпал в двоичном файле, потому что QRegExp в функции indexIn останавливает поиск, когда встречается символ NULL (chr (0)). что я могу сделать, чтобы решить эту проблему?QRegExp и Null Character в Qt
0
A
ответ
1
QString
может содержать нулевые символы, это только его конструкторы, которые несовместимы ...
QString::fromUtf8(const char *str, int size = -1)
использует заданный размер, в то время как QString::fromUtf8(const QByteArray &str)
вынуждает STRLEN вместо того, чтобы использовать размер ByteArray. Посмотрите сами Qt code.
QRegExp
также поддерживает нулевые символы:
QString s(QChar(0));
QRegExp re(s);
qDebug() << re.indexIn(s); // will print 0, not -1
Но не используйте 'fromUtf8', он меняет представление всех байтов больше, чем 127. Там должна быть другая функция кодирования. 'fromLatin1' например. – ilotXXI
К сожалению, вы определенно правы, я слишком много сосредоточился на проблеме с нулевым символом и забыл остальные байты. –