Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
1

из char[] в int

23.03.2012, 11:30. Показов 2767. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача не столь тривиальна как кажется. Мне нужно преобразовать например "2523532" в char* где данные будут храниться в 256ричной системе. И после обратно в char[]. Так вот как это сделать НЕ пользуясь int'ами?

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

Добавлено через 18 минут
Неужели никто не знает и даже мыслей нету? ><
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2012, 11:30
Ответы с готовыми решениями:

Реализация функции char *padl(const char *string, int len, int c=' ')
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо...

Форматирование строк, char to int & int to char
Покажите как запихнуть число в строку и вытащить его обратно из строки. Вот всё просто в pawn ...

Как превести из char* в int и наоборот из int в char*?
Как превести из char* aa='123' в int aa=123 и наоборот из int в char* . Понимаю что самому...

Подскажите пожалуйста с int main(int argc, char*argv[])
Если я правильно понимаю, то int argc это передача аргумента программе, т. е если argc&gt;1 то...

24
7 / 7 / 1
Регистрация: 29.03.2011
Сообщений: 81
23.03.2012, 11:43 2
Цитата Сообщение от Ksan Посмотреть сообщение
из char[] в int
Цитата Сообщение от Ksan Посмотреть сообщение
Так вот как это сделать НЕ пользуясь int'ами?
Вот совсем вас не понял!

Недавно тут поднимал тему преобразования char[] в int, самый легкий и быстрый способ это
C++
1
2
char * ch=malloc(sizeof(char)*4);
int i=*((int *)ch);
но он небезопасный
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
23.03.2012, 11:49  [ТС] 3
Driim, объясняю, пишу свой класс чисел (больше чем 2^32). Поэтому int'ами пользоваться нельзя, собственно. В процессе мне нужно задать переменной класса какое-либо число, для этого мне нужно перевести строку (например: "2254345") в 256-ричную СС, что бы хранить в char*. А для вывода на экран нужно снова преобразовать к строке. Как сделать это, не пользуясь int я не знаю
0
Модератор
Эксперт С++
13508 / 10758 / 6412
Регистрация: 18.12.2011
Сообщений: 28,723
23.03.2012, 11:50 4
Поищите в этом разделе по тексту "преобразование в любую систему счисления"
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
23.03.2012, 12:02  [ТС] 5
zss, там реализовано опять же через int
0
7 / 7 / 1
Регистрация: 29.03.2011
Сообщений: 81
23.03.2012, 12:07 6
Реализуй через uint64_t туда можно записать больше чем 2^32
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,169
23.03.2012, 12:11 7
Цитата Сообщение от Ksan Посмотреть сообщение
будут храниться в 256ричной системе
Зачем так экзотично?
0
Модератор
Эксперт С++
13508 / 10758 / 6412
Регистрация: 18.12.2011
Сообщений: 28,723
23.03.2012, 12:25 8
Вот нашел то, что Вам надо.
https://www.cyberforum.ru/cpp-... post154443
Заберите с этой страницы файл conv_w.rar
0
Эксперт С++
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
23.03.2012, 12:41 9
Цитата Сообщение от kazak Посмотреть сообщение
Зачем так экзотично?
Чтобы хранить в массиве char'ов максимум информации?

Добавлено через 3 минуты
Цитата Сообщение от Driim Посмотреть сообщение
но он небезопасный
Ага, и вообще какой-то бредовый...
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,169
23.03.2012, 12:44 10
Цитата Сообщение от silent_1991 Посмотреть сообщение
Чтобы хранить в массиве char'ов максимум информации?
Каким же образом? Какую систему ни выбери, а один чар все равно больше 256 в десятичной системе вместить не сможет
0
Эксперт С++
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
23.03.2012, 12:46 11
kazak, да, но если мы выберем, скажем, 16-ричную систему, то он и больше 16 вместить не сможет.
0
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,169
23.03.2012, 13:01 12
Цитата Сообщение от silent_1991 Посмотреть сообщение
kazak, да, но если мы выберем, скажем, 16-ричную систему, то он и больше 16 вместить не сможет.
Если в чаре хранить один шестнадцетиричный символ, то да. Но это уже из ряда вон.
0
Эксперт С++
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
23.03.2012, 13:03 13
Цитата Сообщение от kazak Посмотреть сообщение
Если в чаре хранить один шестнадцетиричный символ, то да
Ну так, я полагаю, именно для решения данной проблемы было озвучено "256-ричная сс".

Цитата Сообщение от kazak Посмотреть сообщение
Но это уже из ряда вон
Ну а с этим никто и не спорит
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
23.03.2012, 13:16 14
Цитата Сообщение от silent_1991 Посмотреть сообщение
kazak, да, но если мы выберем, скажем, 16-ричную систему, то он и больше 16 вместить не сможет.
Какая разница, как интерпретировать байты? Ну выберешь ты шестнадцатеричную, а ней максимум FF, в десятичной был 255. Что это меняет?
0
Эксперт С++
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
23.03.2012, 13:34 15
taras atavin, в конечном размере массива символов. Для того, чтобы разбить число на группы по 16, потребуется больше ячеек, чем на группы по 256.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
23.03.2012, 13:36 16
Шестнадцатеричных цифр надо ровно в два раз больше, чем двестипятидесятишестиричных, но и занимают они 4 бита, а не 8.
0
Эксперт С++
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
23.03.2012, 13:39 17
taras atavin, и что? Речь не велась о том, как склеить две 16-ричных цифры, чтобы засунуть их в один char. Если бы вопрос ставился так, сс вообще не была бы важна. В двоичной куда проще всё это делать, фигачим биты подряд в ячейки массива, не задумываясь о границах этих ячеек, и всё.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
23.03.2012, 13:48 18
Ты не учёл, что смешанная система, одно из оснований которой является целой степенью другого, полностью эквивалентна не смешанной с основанием, равным меньшему, а если игнорировать представление цифр, то большему. Так вот, https://www.cyberforum.ru/cgi-bin/latex.cgi?2^8=4^4=16^2=256^1. То есть, двоичная, четвертичная, шестнадцатеричная и двестипятьдесятшестиричная различаются лишь интерпретацией. Тебе удобней биты? А мне байты.
0
Эксперт С++
5056 / 3116 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
23.03.2012, 13:54 19
taras atavin, я вообще ничего не учитывал, передо мной задача представления числа не стоит. Я лиш говорил о том, что используя 256ричную сс, можно использовать весь char, а используя 16ричную (без дополнительных манипуляций) - лишь малую его часть.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
23.03.2012, 14:30 20
Чего вдруг? Представь, что байты четырёхбитные, тогда можно записать по цифре на байт число, например, FEA4D41. А в четвертичной это будет 33322210311001, но на самом деле это те же байты, просто F=33, E=32, A=22, 4=10, D=31, 1=01. ну ка найди пропавшие биты! Здесь то же самое.
0
23.03.2012, 14:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2012, 14:30
Помогаю со студенческими работами здесь

Сделать преобразование unsigned char в char, а затем типу int
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для рублей и unsigned char -...

Ошибка: initializing argument 2 of `char* fgets(char*, int, FILE*)
Написать программу, которая считывает текст из файла и выводит на экран только строки,...

конвертирование (char)int (char*)int
Вопрос такой каким образом можно выполнить вот такую операцию: у нас есть: int c = 12; char...

int main(int argc, char* argv[]) ?
Зачем нужны аргументы (int argc, char* argv) для функции main() и обязательно ли их писать?

[BCC32 Error] File1.cpp(74): E2285 Could not find a match for 'student1::student1(const char *,int,int)'
#include&lt;conio.h&gt; #include&lt;stdio.h&gt; #include&lt;iostream.h&gt; #include&lt;windows.h&gt;...

Как в выделенную память записать поочередно число int, массив char[n], и еще число int
Выделяю память void* Start=malloc(Size); Как туда записать поочередно число int, массив char,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru