• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

C++ Pattern to bytes function implementation using regex

  • Автор темы Автор темы mxrz
  • Дата начала Дата начала
Searching for myself
Пользователь
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
214
Реакции
69
Посмотрел как конвертируют в
Пожалуйста, авторизуйтесь для просмотра ссылки.
и
Пожалуйста, авторизуйтесь для просмотра ссылки.
, мне не понравилось, вот реализация с использованием std::regex
PatternToBytes:
Expand Collapse Copy
//  Classes, algorithms and iterators to support regular expression processing
#include <regex>

// std::optional class template
#include <optional>

// std::basic_string class template
#include <string>

// std::vector container
#include <vector>

std::vector< std::optional< std::uint8_t > > PatternToBytes( const std::string &strPattern ) const noexcept {
        // Declare a vector of uint8_t to store the bytes
        std::vector< std::optional< std::uint8_t > > vecBytes;

        // Declare a std::smatch object to store the results of a regex search
        std::smatch MatchResults;

        // Use a regular expression to match hexadecimal values (e.g. "AA", "FF") or '?' characters
        const std::regex RegexPattern( "([0-9a-fA-F]{2}|\\?)" );

        // Declare an iterator to the beginning of the string
        auto Iterator = strPattern.cbegin( );

        // Search for a hexadecimal number in the string, starting at the iterator
        while ( std::regex_search( Iterator, strPattern.cend( ), MatchResults, RegexPattern ) ) {
            // If the matched value is '?', store a null optional in the output vector
            if ( MatchResults[ 1U ] == '?' )
                vecBytes.emplace_back( std::nullopt );
            else
                // Otherwise, convert the hexadecimal string to a number and store it in the output vector
                vecBytes.emplace_back( std::stoul( MatchResults[ 1U ], nullptr, 16 ) );

            // Update the iterator to the end of the match
            Iterator = MatchResults[ 0U ].second;
        }

        // Return the vector of converted bytes
        return vecBytes;
    }

Референсы:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Последнее редактирование:
оно еще дольше чем обычный работает
 
что ты там собрался via регэкс искать? ты по рантайму охуеешь. юзлесс пост.
 
Я же не сказал что это пропер метод?, просто такой вариант реализации тоже может быть
Так а зач тебе юзать медленный паттернскан? В симпле он реализован хорошо, добавить бы только cd-style паттерны и заебись
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я же не сказал что это пропер метод?, просто такой вариант реализации тоже может быть
это не вариант реализации, это вариант пустой траты время + искать по regex будет дольше чем дефолт
 
  • Печально
Реакции: mxrz
это не вариант реализации, это вариант пустой траты время + искать по regex будет дольше чем дефолт
и тем не менее
это работает == вариант реализации, держу в курсе, не важно нравится кому-либо этот вариант или же нет.
 
  • Люблю это
Реакции: mxrz
Назад
Сверху Снизу