Re[3]: Hex string to value
От: Were  
Дата: 28.10.10 20:56
Оценка:
Здравствуйте, chpunteg, Вы писали:

C>Здравствуйте, Were, Вы писали:


W>>А зачем ты представил signed long в виде unsigned long в строке? Пиши ее как -0x7FF8FFA9 и будет работать _tcstol.

C>как же, представил... Мне пришла такая строка — без унарного минуса! И я знаю только, что это тип HRESULT, т.е. просто signed long.

C>а даже если бы я сам представил, то почему HEX'овая строка 0x80070057 это unsigned? Я, например, вижу крайнем бите единицу, т.е. отрицательное значение.

А функция считает, что это положительное значение, которое не влезает в signed long. Формат входной строки описан в документации к функции кстати, и знак минуса там нужно указывать явно.

C>не логично как-то...

А кто сказал, что функция _ltot обратная для _tcstol? В документации к _ltot сказано, что знак минус ставится только для десятичной базы, а в _tcstol он должен быть указан явно для всех.
В общем используй _tcstoul и преобразуй unsigned в signed.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.