Очень медленная функция

strtol очень медленный для моей программы, и я хочу, чтобы он был очень быстрым

так, например, у меня есть эта строка:

PCHAR ex = "\x55\xEC" etc...

Они шестнадцатеричные, так что если я хочу написать это без «\ x», чтобы оно было похоже на «55 EC» и т. Д. Я должен использовать strtol, но strtol чрезвычайно медленный для моей программы, я хочу самый быстрый в моей программе ..

I use strtol like (CHAR)strtol(ex, &ex, 16);

Помоги мне, пожалуйста?

-3

Решение

Я бы сделал что-то вроде этого:

unsigned long ex[] {0x55, 0xEC};

for (auto i : ex)
std::cout << std::hex << i << " ";

Выход: 55 EC

1

Другие решения

Что ты пытаешься? strtol преобразует строку байта в длинное целое число; когда строка 0x в качестве префикса он обрабатывает строку как шестнадцатеричное число. Не будет конвертировать \x55 в 55, Три ошибки в предположении:

  • Это будет конвертировать 0x55 в 55, Нет, это превратит это в 85 (десятичный)
  • Он преобразует несколько чисел в строку. Нет, он преобразует только одно число в строке в long или же long long)
  • Это займет шестнадцатеричное число формата \x, Нет, это должно быть 0x чтобы он распознал его как шестнадцатеричное значение

То, что у вас есть, не является примером использования strtol совсем. Вам придется вручную сделать преобразование.

Все, что вам нужно, это просто найти-заменить все \x с пробелом и обрезать полученную строку, чтобы сбрить ведущее пространство.

0

По вопросам рекламы [email protected]