Форум программистов, компьютерный форум CyberForum.ru

из char[] в int - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.94
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
23.03.2012, 11:30     из char[] в int #1
Задача не столь тривиальна как кажется. Мне нужно преобразовать например "2523532" в char* где данные будут храниться в 256ричной системе. И после обратно в char[]. Так вот как это сделать НЕ пользуясь int'ами?

Добавлено через 26 минут
Форумчанееее

Добавлено через 18 минут
Неужели никто не знает и даже мыслей нету? ><
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Driim
7 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 81
23.03.2012, 11:43     из char[] в int #2
Цитата Сообщение от Ksan Посмотреть сообщение
из char[] в int
Цитата Сообщение от Ksan Посмотреть сообщение
Так вот как это сделать НЕ пользуясь int'ами?
Вот совсем вас не понял!

Недавно тут поднимал тему преобразования char[] в int, самый легкий и быстрый способ это
C++
1
2
char * ch=malloc(sizeof(char)*4);
int i=*((int *)ch);
но он небезопасный
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
23.03.2012, 11:49  [ТС]     из char[] в int #3
Driim, объясняю, пишу свой класс чисел (больше чем 2^32). Поэтому int'ами пользоваться нельзя, собственно. В процессе мне нужно задать переменной класса какое-либо число, для этого мне нужно перевести строку (например: "2254345") в 256-ричную СС, что бы хранить в char*. А для вывода на экран нужно снова преобразовать к строке. Как сделать это, не пользуясь int я не знаю
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,180
Завершенные тесты: 1
23.03.2012, 11:50     из char[] в int #4
Поищите в этом разделе по тексту "преобразование в любую систему счисления"
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
23.03.2012, 12:02  [ТС]     из char[] в int #5
zss, там реализовано опять же через int
Driim
7 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 81
23.03.2012, 12:07     из char[] в int #6
Реализуй через uint64_t туда можно записать больше чем 2^32
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
23.03.2012, 12:11     из char[] в int #7
Цитата Сообщение от Ksan Посмотреть сообщение
будут храниться в 256ричной системе
Зачем так экзотично?
zss
Модератор
Эксперт С++
 Аватар для zss
5946 / 5551 / 1784
Регистрация: 18.12.2011
Сообщений: 14,180
Завершенные тесты: 1
23.03.2012, 12:25     из char[] в int #8
Вот нашел то, что Вам надо.
http://www.cyberforum.ru/cpp-beginne...tml#post154443
Заберите с этой страницы файл conv_w.rar
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.03.2012, 12:41     из char[] в int #9
Цитата Сообщение от kazak Посмотреть сообщение
Зачем так экзотично?
Чтобы хранить в массиве char'ов максимум информации?

Добавлено через 3 минуты
Цитата Сообщение от Driim Посмотреть сообщение
но он небезопасный
Ага, и вообще какой-то бредовый...
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
23.03.2012, 12:44     из char[] в int #10
Цитата Сообщение от silent_1991 Посмотреть сообщение
Чтобы хранить в массиве char'ов максимум информации?
Каким же образом? Какую систему ни выбери, а один чар все равно больше 256 в десятичной системе вместить не сможет
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.03.2012, 12:46     из char[] в int #11
kazak, да, но если мы выберем, скажем, 16-ричную систему, то он и больше 16 вместить не сможет.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
23.03.2012, 13:01     из char[] в int #12
Цитата Сообщение от silent_1991 Посмотреть сообщение
kazak, да, но если мы выберем, скажем, 16-ричную систему, то он и больше 16 вместить не сможет.
Если в чаре хранить один шестнадцетиричный символ, то да. Но это уже из ряда вон.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.03.2012, 13:03     из char[] в int #13
Цитата Сообщение от kazak Посмотреть сообщение
Если в чаре хранить один шестнадцетиричный символ, то да
Ну так, я полагаю, именно для решения данной проблемы было озвучено "256-ричная сс".

Цитата Сообщение от kazak Посмотреть сообщение
Но это уже из ряда вон
Ну а с этим никто и не спорит
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
23.03.2012, 13:16     из char[] в int #14
Цитата Сообщение от silent_1991 Посмотреть сообщение
kazak, да, но если мы выберем, скажем, 16-ричную систему, то он и больше 16 вместить не сможет.
Какая разница, как интерпретировать байты? Ну выберешь ты шестнадцатеричную, а ней максимум FF, в десятичной был 255. Что это меняет?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.03.2012, 13:34     из char[] в int #15
taras atavin, в конечном размере массива символов. Для того, чтобы разбить число на группы по 16, потребуется больше ячеек, чем на группы по 256.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
23.03.2012, 13:36     из char[] в int #16
Шестнадцатеричных цифр надо ровно в два раз больше, чем двестипятидесятишестиричных, но и занимают они 4 бита, а не 8.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.03.2012, 13:39     из char[] в int #17
taras atavin, и что? Речь не велась о том, как склеить две 16-ричных цифры, чтобы засунуть их в один char. Если бы вопрос ставился так, сс вообще не была бы важна. В двоичной куда проще всё это делать, фигачим биты подряд в ячейки массива, не задумываясь о границах этих ячеек, и всё.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
23.03.2012, 13:48     из char[] в int #18
Ты не учёл, что смешанная система, одно из оснований которой является целой степенью другого, полностью эквивалентна не смешанной с основанием, равным меньшему, а если игнорировать представление цифр, то большему. Так вот, http://www.cyberforum.ru/cgi-bin/latex.cgi?2^8=4^4=16^2=256^1. То есть, двоичная, четвертичная, шестнадцатеричная и двестипятьдесятшестиричная различаются лишь интерпретацией. Тебе удобней биты? А мне байты.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.03.2012, 13:54     из char[] в int #19
taras atavin, я вообще ничего не учитывал, передо мной задача представления числа не стоит. Я лиш говорил о том, что используя 256ричную сс, можно использовать весь char, а используя 16ричную (без дополнительных манипуляций) - лишь малую его часть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2012, 14:30     из char[] в int
Еще ссылки по теме:

C++ Подскажите пожалуйста с int main(int argc, char*argv[])
C++ Как в выделенную память записать поочередно число int, массив char[n], и еще число int
C++ [BCC32 Error] File1.cpp(74): E2285 Could not find a match for 'student1::student1(const char *,int,int)'

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
23.03.2012, 14:30     из char[] в int #20
Чего вдруг? Представь, что байты четырёхбитные, тогда можно записать по цифре на байт число, например, FEA4D41. А в четвертичной это будет 33322210311001, но на самом деле это те же байты, просто F=33, E=32, A=22, 4=10, D=31, 1=01. ну ка найди пропавшие биты! Здесь то же самое.
Yandex
Объявления
23.03.2012, 14:30     из char[] в int
Ответ Создать тему
Опции темы

Текущее время: 17:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru