Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 124

Преобразование char в int без использования функций библиотеки С

13.10.2015, 09:11. Показов 4844. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно САБЖ
имеется переменная
char c='123';
требуется поместить ее в целочисленную переменную например int k;
так чтобы в нее записалось число 123 и потом вывести это 123 в шестнадцатиричной CC
сделать без использования функций библиотек С (например таких как atoi и тп )
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.10.2015, 09:11
Ответы с готовыми решениями:

Преобразование int и double в char без использования sprintf()
Здравствуйте, ув форумчани! Подскажите пожалуйста, какими инструментами С++ можно преобразовать int, double в char, и самое главное, что...

Добавить 3 переменные в массив char без использования библиотеки string
задача такая: есть 3 переменные, которые вводит пользователь адрес сервера, юзер, сообщение. нужно запихнуть их в массив char без...

Как сделать замену слова в строке без использования функций библиотеки string?
вводится строка => вводится слово, которое нужно заменить(если оно есть в строке)=> вводится слово на которое нужно заменить

34
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 124
13.10.2015, 11:32  [ТС]
Студворк — интернет-сервис помощи студентам
nmcf,
вот так?
char itog[50];
sprintf("itog %x ",n);или как?а то не могу разобраться

Добавлено через 2 минуты
nmcf, не могу понять если пишу так

sprintf("itog[] %x ",n); выдает ошибку

строку описал выше
0
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433
13.10.2015, 11:39
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
имеется переменная
char c='123';
Тип чар не может иметь значение 123 возможно вы имели в виду код 123 из таблицы ASKII ?
0
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 124
13.10.2015, 11:43  [ТС]
Aqua77, с этим уже разобрались почитайте тему на повестке дня сейчас вопрос другой а именно

Байт, только вот вопрос на выходе я получаю шестнадцатеричное представление числа как его записать в строку??
т е по итогу работу программы я имею несколько шестнадцатеричных чисел например (98 f 62 3cb 177)
как из них сделать строку вида s={"98 f 62 3cb 177"}
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
13.10.2015, 11:47
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
using namespace std;   
int main () 
{
    setlocale (LC_ALL, "RUS");
    int i,n=0, p=1;
    char itog[100];
    *itog = '\0';
 
    char stroka[] = {"152 ef11 ff21 15 98 971 ea521 375"};  
    for (i=0; stroka[i];i++)
    {
        if (stroka[i] >='0' && stroka[i] <='9') 
        {
        
            for (n=0;stroka[i] >='0' && stroka[i] <='9';i++ )
            {
                if (stroka[i]==' ' || stroka[i]=='\0')break;
                n=10*n+( stroka[i] - '0');
            }               
            printf("%x ",n);
            sprintf(itog + strlen(itog), "%x ",n);
        }
        else 
            while (stroka[i]!=' ' )
            {
                if (stroka[i]=='\0') break;
                i++;
            }       
    n=0;
    }
getch();
    return 0;
}
0
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 124
13.10.2015, 11:53  [ТС]
nmcf, на выходе что попало
тройки какие то
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
13.10.2015, 11:59
На каком выходе? Актуальный вариант покажи.
0
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 124
13.10.2015, 12:08  [ТС]
nmcf, сейчас моя программа имеет вид

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
using namespace std;   
int main () 
{
    setlocale (LC_ALL, "RUS");
    int i,n=0, p=1, k=0;
 
    char stroka[] = {"152 ef11 ff21 15 99 971 ea521 375"};  
    char itog [33];
    for (i=0; stroka[i];i++)
    {
        if (stroka[i] >='0' && stroka[i] <='9') 
        {
        
            for (n=0;stroka[i] >='0' && stroka[i] <='9';i++ )
            {
                if (stroka[i]==' ' || stroka[i]=='\0')break;
                n=10*n+( stroka[i] - '0');
                    
            }               
            printf("%x ",n);
        }
        else 
            while (stroka[i]!=' ' )
            {
                if (stroka[i]=='\0') break;
                i++;
            }       
    n=0;
    }
 
getch();
    return 0;
}
после выполнения программы в консоли появляется : 98 f 63 3cb 177
это целые числа 152 15 99 971 375 записанные в 16й СС теперь эти числа (98 f 63 3cb 177) нужно записать в строку чтобы она имела вид itog = {"98 f 63 3cb 177"}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
13.10.2015, 12:11
Sibmax1988, Пусть у вас есть число int n. В памяти машины оно представлено как последовательность нулей и единиц. А вы хотите получить ее представление в какой-то системе счисления p-ичной (в данном случае 16-тиричной). Так?
Делается это просто. Берется n, делится на p. Так вот остаток от этого деления(с=n%p) и будет очередной p-ичной цифрой. С конца. Далее берем результат деления (n = n/p) и все повторяем, пока n не станет равным нулю.
Маленькая тонкость. c - арифметическое представление цифры (0,1,...9,10,..15) А нам нужно получить ее символьное представление ('0',...'9', 'a',...'f')
Делается это таким оператором
C++
1
(c<=9) ? '0'+c : 'a' + c - 10;
Дальше - дерзайте!

Добавлено через 2 минуты
Собственно говоря, это и делают функции типа sprintf, printf, itoa...
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
13.10.2015, 12:11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
using namespace std;   
int main () 
{
    setlocale (LC_ALL, "RUS");
    int i,n=0, p=1, k=0;
 
    char stroka[] = {"152 ef11 ff21 15 99 971 ea521 375"};  
    char itog [33];
    *itog = '\0';
    for (i=0; stroka[i];i++)
    {
        if (stroka[i] >='0' && stroka[i] <='9') 
        {
        
            for (n=0;stroka[i] >='0' && stroka[i] <='9';i++ )
            {
                if (stroka[i]==' ' || stroka[i]=='\0')break;
                n=10*n+( stroka[i] - '0');
                    
            }               
            printf("%x ",n);
            sprintf(itog + strlen(itog), "%x ",n);
        }
        else 
            while (stroka[i]!=' ' )
            {
                if (stroka[i]=='\0') break;
                i++;
            }       
    n=0;
    }
 
    printf("%s", itog);
 
getch();
    return 0;
}
1
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 124
13.10.2015, 12:16  [ТС]
nmcf, можно получить пояснения по этим строкам?для чего и что именно делают?

*itog = '\0';зачем указатель и можно ли без него т к их по программе еще не проходили

sprintf(itog + strlen(itog), "%x ",n); что делает?
просто это мне потом надо будет объяснить преподу
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
13.10.2015, 12:19
Sibmax1988, А, понял, что вам нужно. Просто поместить в строку список чисел. Тогда уважаемый nmcf, в посте 29 вполне решил вашу задачу.
Ну, а если моя "лекция" в посте 28 содержит какие-то новые для вас моменты - буду рад. Если же все это вам давно известно, так это еще лучше.

Добавлено через 2 минуты
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
*itog = '\0';зачем указатель и можно ли без него
Ни в коем случае! Это обязательно! Чтобы strlen(itog) давал 0
0
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 124
13.10.2015, 12:32  [ТС]
Байт, понимаете он сделал это с помощью указателей (которые не были пройдены еще в программе )
а так же функции sprintf (которая так же не была изучена)

можете ли вы с эту тернарную операцыю которую написали "прикрутить " к моей программе чтобы итог был как у
nmcf в посте 29
я не могу использовать то что написал nmcf в посте 29 т к как понимаю как работает sprintf а соответственно не смогу этого потом объяснить преподу

Добавлено через 10 минут
Байт, т к как НЕ понимаю как работает sprintf
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
13.10.2015, 13:48
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
НЕ понимаю как работает sprintf
Совершенно также, как printf, только выводит не на консоль, а в строку
0
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 124
13.10.2015, 13:52  [ТС]
Байт, зачем указатель и что значит itog + strlen(itog) в строке
sprintf(itog + strlen(itog), "%x ",n);
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
13.10.2015, 15:21
Строка должна быть пустой в самом начале. Напиши так, если указатель не нравится:
C++
1
itog[0] = '\0'
Добавлено через 1 минуту
itog + strlen(itog) - это позиция конца строки, куда добавляется очередное число.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.10.2015, 15:21

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

Преобразование int в char
Всем привет! Мне нужно преобразовать число в строку. Использую sprintf() всё работает, НО переменная получает не значение, а ссылку на это...

с++ преобразование char в int
void job_search(int length, Worker *data, int position) { cout &lt;&lt; &quot; List of workers with experience &quot; &lt;&lt; position &lt;&lt; &quot; position &quot; &lt;&lt;...

Преобразование Int в char
от скуки баловался с кодом.решил проверить,можно ли сделать так? #include &lt;iostream&gt; int main(){ char b = 't'; int a =b; ...

Преобразование char в int
Решаю задачу из книги, требуется написать программу, которая запрашивает у пользователя степень и возводит в эту степень число, надо...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru