strtol очень медленный для моей программы, и я хочу, чтобы он был очень быстрым
так, например, у меня есть эта строка:
PCHAR ex = "\x55\xEC" etc...
Они шестнадцатеричные, так что если я хочу написать это без «\ x», чтобы оно было похоже на «55 EC» и т. Д. Я должен использовать strtol, но strtol чрезвычайно медленный для моей программы, я хочу самый быстрый в моей программе ..
I use strtol like (CHAR)strtol(ex, &ex, 16);
Помоги мне, пожалуйста?
Я бы сделал что-то вроде этого:
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
с пробелом и обрезать полученную строку, чтобы сбрить ведущее пространство.