Здравствуйте, Were, Вы писали:
W>А зачем ты представил signed long в виде unsigned long в строке? Пиши ее как -0x7FF8FFA9 и будет работать _tcstol.
как же, представил... Мне пришла такая строка — без унарного минуса! И я знаю только, что это тип HRESULT, т.е. просто
signed long.
а даже если бы я сам представил, то почему HEX'овая строка 0x80070057 это unsigned? Я, например, вижу крайнем бите единицу, т.е. отрицательное значение.
Интересная ситуация выходит.
При конвертации signed в hex строку
TCHAR sz[9];
_ltot(E_INVALIDARG, sz, 16);
получу верное значение "80070057"
(а не "-0x7FF8FFA9")
а при обратном — hex в signed
_tcstol(_T("80070057"), NULL, 16);
получаю неверное LONG_MAX (0x7fffffff)
не логично как-то...