2016-07-02 2 views
0

Я хочу искать в двоичном файле с регулярным выражением. мой поиск удался в текстовых файлах, но не совпал в двоичном файле, потому что QRegExp в функции indexIn останавливает поиск, когда встречается символ NULL (chr (0)). что я могу сделать, чтобы решить эту проблему?QRegExp и Null Character в Qt

ответ

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 
+1

Но не используйте 'fromUtf8', он меняет представление всех байтов больше, чем 127. Там должна быть другая функция кодирования. 'fromLatin1' например. – ilotXXI

+0

К сожалению, вы определенно правы, я слишком много сосредоточился на проблеме с нулевым символом и забыл остальные байты. –