я хочу искать в двоичном файле с регулярным выражением. мой поиск успешен в текстовых файлах, но не совпадает в двоичном файле, потому что QRegExp в функции indexIn останавливает поиск, когда встречает символ NULL (chr (0)). что я могу сделать, чтобы решить эту проблему?
QRegExp и нулевой символ в Qt
Ответы (1)
QString
может содержать нулевые символы, просто его конструкторы несовместимы...
QString::fromUtf8(const char *str, int size = -1)
использует заданный размер, а QString::fromUtf8(const QByteArray &str)
принудительно использует strlen вместо использования размера bytearray. Убедитесь сами в коде Qt.
QRegExp
также поддерживает нулевые символы:
QString s(QChar(0));
QRegExp re(s);
qDebug() << re.indexIn(s); // will print 0, not -1
person
λuser
schedule
02.07.2016
Но не используйте
fromUtf8
, это изменяет представление всех байтов больше 127. Должна быть другая функция кодирования. fromLatin1
например.
- person ilotXXI; 02.07.2016
К сожалению, вы определенно правы, я слишком много внимания уделял проблеме нулевого символа и забыл об остальных байтах.
- person λuser; 03.07.2016