Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что за ..? atoi / 6 сообщений из 6, страница 1 из 1
05.02.2007, 15:54
    #34306890
sax___
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за ..? atoi
Есть код:

Код: plaintext
1.
2.
3.
char tmp[ 16 ];
memset(tmp,  0 ,  16 );
. . . //здесь temp становится равным "\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\"
int y = atoi(tmp);

И в конечном итоге y становится равным 0 вместо 17. В Чем дело?
...
Рейтинг: 0 / 0
05.02.2007, 16:26
    #34307022
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за ..? atoi
sax___ пишет:

> char tmp[*16*];
> memset(tmp, *0*, *16*);
> . . . //здесь temp становится равным "\x11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\"
> int y = atoi(tmp);
>
>
> И в конечном итоге y становится равным 0 вместо 17. В Чем дело?

А чему ж она еще будет равна ?

\x11 == Ctrl-Q - управляющий символ какой-то. atoi разбирает
строку до первого нецифрового символа. Вот ноль и получится.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
05.02.2007, 16:28
    #34307031
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за ..? atoi
а зачем тут вообще atoi ?
если я правильно понимаю желаемое, то нужно что-то в таком духе:
Код: plaintext
int y = tmp[ 3 ]<< 24 +tmp[ 2 ]<< 16 +tmp[ 1 ]<< 8 +tmp[ 0 ];
только со знаковостью еще надо не напутать...
...
Рейтинг: 0 / 0
05.02.2007, 16:37
    #34307065
sax_____
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за ..? atoi
Да я уже догадался. Понедельник, млин. Поработал с DLL так что IDE "снесло"
...
Рейтинг: 0 / 0
06.02.2007, 12:36
    #34308921
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за ..? atoi
miksoft
Код: plaintext
int y = tmp[ 3 ]<< 24 +tmp[ 2 ]<< 16 +tmp[ 1 ]<< 8 +tmp[ 0 ];
мощно задвинул
Код: plaintext
int y = *(int*)tmp;
...
Рейтинг: 0 / 0
06.02.2007, 12:56
    #34309029
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что за ..? atoi
maXmo miksoft
Код: plaintext
int y = tmp[ 3 ]<< 24 +tmp[ 2 ]<< 16 +tmp[ 1 ]<< 8 +tmp[ 0 ];
мощно задвинул
Код: plaintext
int y = *(int*)tmp;
Мне так оно нагляднее показалось :)
Через указатель, конечно, оптимальнее при точно совпадающем порядке байтов.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Что за ..? atoi / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]