Очень медленная функция
strtol очень медленный для моей программы, и я хочу, чтобы он был очень быстрым
так, например, у меня есть эта строка:
PCHAR ex = "\x55\xEC" etc...
Они шестнадцатеричные, так что если я хочу написать это без "\x", чтобы оно было похоже на "55 EC" и т. Д. Я должен использовать strtol, но strtol чрезвычайно медленный для моей программы, я хочу самый быстрый в моей программе..
I use strtol like (CHAR)strtol(ex, &ex, 16);
Помоги мне, пожалуйста?
2 ответа
Я бы сделал что-то вроде этого:
unsigned long ex[] {0x55, 0xEC};
for (auto i : ex)
std::cout << std::hex << i << " ";
Выход: 55 EC
Что ты пытаешься? strtol
преобразует строку байта в длинное целое число; когда строка 0x
в качестве префикса он обрабатывает строку как шестнадцатеричное число. Не будет конвертировать \x55
в 55
, Три ошибки в предположении:
- Это будет конвертировать
0x55
в55
, Нет, это превратит это в85
(десятичный) - Он преобразует несколько чисел в строку. Нет, он преобразует только одно число в строке в
long
или жеlong long
) - Это займет шестнадцатеричное число формата
\x
, Нет, это должно быть0x
чтобы он распознал его как шестнадцатеричное значение
То, что у вас есть, не является примером использования strtol
совсем. Вам придется вручную сделать преобразование.
Все, что вам нужно, это просто найти-заменить все \x
с пробелом и обрезать полученную строку, чтобы сбрить ведущее пространство.