LINUX.ORG.RU

Вытаскивание большого числа из char *.


0

0

Что делать, если у меня есть значение в пределах unsigned int (т.е. 8 байт) записанное в строке. Ни функцией atoi, ни функцией atol по понятным причинам его оттуда вытащить не получается, потому что в Unix int и long int по четыре байта. Как в таких случаях поступают? Может как-то нужно с символами пошаманить. С лету в голову ответ не приходит. Подскажите.


Ответ на: комментарий от anonymous

А, ну да, балбес. Там просто еще один бит дополнительный не под знак, а под число.

Lestat
() автор топика

ui = *(unsigned int*)str;

PS: обычно unsigned int это все таки 4 байта

lg ★★
()
Ответ на: комментарий от Murr

2Murr (*) (09.12.2003 16:04:56)

А что такое IA32 :)

anonymous
()
Ответ на: комментарий от Murr

Имеются в виду int и long int в gcc, of course. Если они по одному байту, то 8, конечно, не влезет. :)

Murr ★★
()

В компилерах, поддерживающих стандарт ISO/IEC 9899:1990 (AKA ISO C99) и конкретно в gcc:

long long atoll(const char *nptr);

получишь длинное-длинное 64 битное число ;)

loki
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.