WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Трабл с переводом из HEX to int

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Трабл с переводом из HEX to int
Alexber опубликован 05-02-2002 11:48 MSK   Click Here to See the Profile for Alexber   Click Here to Email Alexber  
Необходимо перевести число из hex(CString) to int
SUnteXx опубликован 05-02-2002 00:35 MSK     Click Here to See the Profile for SUnteXx  Click Here to Email SUnteXx     
Сделай сам! Я делал для int чисел! Надо, могу кинуть пример!

Ладно, держи:

UINT ConvertFromCharToUINT (char *szString)
{
char *lpszTmp;
lpszTmp = szString;
char *Symbol = (char*)GlobalAlloc(GMEM_FIXED, 1); // Выделяем память на один символ, в котором будем хранить число для проверки
UINT a, b;
for (a = strlen(szString); a > 0; a--, lpszTmp++) // Первый цикл
{
for (b = 0; b < 10; b++) // Второй цикл для проверки нашего числа
{
_itoa(b, Symbol, 10); // переводим число b в строку
if (!strnicmp(Symbol, lpszTmp, 1)) // а здесь проверяем, соответствует ли символ в строке нашему
{
Result += b * pow(10, a - 1); // Result - результат, т.е. здесь идет просчет
break;
}
}
}

GlobalFree(Symbol); // Чистим буфер
return Result;
}

Сори, за оформление и за лишний бред, но я тогда только начинал программинг на C++, так что ...

Здесь ф-ции не учитывается значения, меньшие чем ноль (нуль)! Тут надо совсем чуть-чуть доделать/добавить (а именно проверку значений типа 0xa...0xf) и все будет хорошо! Помощь нужна? Если что, мыль на мыло SUnteXx@pisem.net, а то забуду еще!

ADK опубликован 05-02-2002 00:38 MSK     Click Here to See the Profile for ADK  Click Here to Email ADK     
StrToIntEx


BOOL StrToIntEx(
LPCTSTR pszString,
DWORD dwFlags,
int FAR * piRet
);

Converts a decimal or hexadecimal string to an integer.

Returns TRUE if the string is converted, or FALSE otherwise.
pszString
Address of a null-terminated string to be converted.
dwFlags
Specifies if pszString contains a decimal or hexadecimal value. This can be one of the following values: STIF_DEFAULT pszString contains a decimal value.
STIF_SUPPORT_HEX pszString contains a hexadecimal value.

piRet
Address of an integer variable that receives the converted string.

Лежит в Shell32.dll

Alexber опубликован 05-02-2002 13:02 MSK     Click Here to See the Profile for Alexber  Click Here to Email Alexber     
А как подключить эту dll?
Jack опубликован 05-02-2002 13:30 MSK     Click Here to See the Profile for Jack  Click Here to Email Jack     
А еще можно так:

CString hex;
hex = "0xdead";

char *p;
int rez = strtol(hex, &p, 16);

Alexber опубликован 05-02-2002 13:59 MSK     Click Here to See the Profile for Alexber  Click Here to Email Alexber     
Спасибо ;) Только не надо писать "0x" перед строкой
SUnteXx опубликован 06-02-2002 01:36 MSK     Click Here to See the Profile for SUnteXx  Click Here to Email SUnteXx     
2ALL:
Я думал вручную:) В ручную ж круче:)

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.