Вход на сайт
64 bit integer in C
626
NEW 03.11.10 12:15
Уважаемые форумчане,
Помогите решить проблему:
Как перевести hex в int большое число
0001F90000000002 --> 64 bit unsigned
Програмирование на Си в юниксе
Благодарен за помощь
Помогите решить проблему:
Как перевести hex в int большое число
0001F90000000002 --> 64 bit unsigned
Програмирование на Си в юниксе
Благодарен за помощь
NEW 03.11.10 15:16
в ответ Бортэ-Чино 03.11.10 12:15
0001F90000000002 - это стринг?
и этот стринг нужно преобразовать в беззнаковое целое 64 разряда? Т.е. (ввиду того что беззнаковое целое только 32 разряда) в два по 32. т.е. сохранить в 8ми байтах.
я правильно понял?
и этот стринг нужно преобразовать в беззнаковое целое 64 разряда? Т.е. (ввиду того что беззнаковое целое только 32 разряда) в два по 32. т.е. сохранить в 8ми байтах.
я правильно понял?
Проклят нарушающий межи ближнего своего (Втор.27:17)
03.11.10 15:55
555253372026882 - это текстовое представление тех 8ми байтов. А это уже другая задача: преобразования беззнакового 64аразрядного целого в текстовый(стринговый) десятичный вид.
для этого придётся самому функцию написать.
А вот первая задача (преобразования стрингового 16ричного числа в 64хразрядное беззнаковое целое ) довольно проста.
в цикле преобразовывать каждый байт отдельно и сохранять сдвигая и делая OR с предыдущим резултатом (исходное состояние 0)
для этого придётся самому функцию написать.
А вот первая задача (преобразования стрингового 16ричного числа в 64хразрядное беззнаковое целое ) довольно проста.
в цикле преобразовывать каждый байт отдельно и сохранять сдвигая и делая OR с предыдущим резултатом (исходное состояние 0)
Проклят нарушающий межи ближнего своего (Втор.27:17)
NEW 03.11.10 16:46
в ответ Бортэ-Чино 03.11.10 15:19
Но как это перевести в Си ?
------
Ты бы определился с тем, что именно тебе надо сделать:
- читать, хранить и выводить 64-битные целые значения
или
- выполнить преобразование строки "0001F90000000002" (хех) в "555253372026882" (dec)
или
- написать преобразователь строки представляющей 64-битный хех в строку с десятичным аналогом...
------
Ты бы определился с тем, что именно тебе надо сделать:
- читать, хранить и выводить 64-битные целые значения
или
- выполнить преобразование строки "0001F90000000002" (хех) в "555253372026882" (dec)
или
- написать преобразователь строки представляющей 64-битный хех в строку с десятичным аналогом...
NEW 03.11.10 17:26
в ответ Бортэ-Чино 03.11.10 17:14
Тогда пишешь прямо по определению процедуры преобразования - получить символ разряда, конвертнуть во вторую систему, сложить с остатком, вычленить значимую часть для вывода и запомнить остаток... Там больших промежуточных, более трех значимых цифр, нигде не случается...


