Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > пребразование int в char в С


Автор: wwwdiz 17.11.2006, 00:20
Компилятор Turbo C++ Borland 3.0

и необходимо преобразовать число int в char....
поиск юзал больших результатов не принёс....

Что можете посоветовать?

Автор: Xenon 17.11.2006, 00:30
itoa();

Автор: Dray 17.11.2006, 00:38
sprintf (...);
Google

Автор: Xenon 17.11.2006, 00:39
Dray, хорошая функция google - в стандарт ее smile

Автор: Rockie 17.11.2006, 01:30
wwwdiz, если не в строку char то imho нет смысла преобразовывать. можно выводить и int как char, просто надо учитывать что размерность char равна байту, а инта нет(переполнение char). В общем пример:
Код
#include<stdio.h>

int main(){

 int num = 100;       // тип int
 printf("%c\n", num); // выводим %c, как char

 printf("%c\n", 356); // 100+256
 printf("%c\n", 612); // и так далее, отнимая либо прибавляя 256

 return 0;
}

Автор: archimed7592 17.11.2006, 01:33
Код
int i = 3;
char c = '0' + i;
только для цифр (0-9)...но другое в char не засунешь smile

Автор: JackYF 17.11.2006, 15:48
Цитата(Xenon @  17.11.2006,  00:39 Найти цитируемый пост)
Dray, хорошая функция google - в стандарт ее smile 


 smile 

Автор: zabivator 17.11.2006, 18:46
Может я ошибаюсь, но по-моему...
Код

int a;
char b = ( char ) a;

Автор: JackYF 17.11.2006, 18:59
zabivator, ошибаешься. Не сработает. Попробуй.
А потом посмотри пост archimed7592'a. 

Автор: archimed7592 17.11.2006, 19:01
zabivator, смотря какое преобразование нужно. если char как число преобразовать в int как число, то да, если же рассматривать char как символ, то нет

Автор: Shymep 17.11.2006, 19:03
Цитата(zabivator @ 17.11.2006,  18:46)
Может я ошибаюсь, но по-моему...
Код

int a;
char b = ( char ) a;

Только я бы сделал
Код
unsigned a;
char b = ( char ) a;


Хотя и так можно smile 

Автор: JackYF 17.11.2006, 19:05
Цитата(Shymep @  17.11.2006,  19:03 Найти цитируемый пост)
Только я бы сделал
unsigned a;
char b = ( char ) a;


Нехорошо - "unsigned". Указывай уж полный тип.

По существу - что изменилось? Тем более, что char - знаковый тип(по умолчанию).

Автор: archimed7592 17.11.2006, 19:17
Цитата(Shymep @  17.11.2006,  20:03 Найти цитируемый пост)
Только я бы сделал
 smile зачем?

Автор: vinter 17.11.2006, 22:02
Цитата

Нехорошо - "unsigned". Указывай уж полный тип.

почему?? стандарт это держит..
Цитата

 Тем более, что char - знаковый тип(по умолчанию).

зато символ интерпретируется как беззнаковое число..

Автор: Shymep 18.11.2006, 02:13
Цитата(archimed7592 @ 17.11.2006,  19:17)
Цитата(Shymep @  17.11.2006,  20:03 Найти цитируемый пост)
Только я бы сделал
 smile зачем?


Цитата(vinter @ 17.11.2006,  22:02)
зато символ интерпретируется как беззнаковое число..


Просто, как там говорится, хороший стиль программирования  smile 


Автор: alpetyan 18.11.2006, 05:10
Это легко можно сделать вставив маленький ассемблерный код.

1. Перевести шестнадцатеричную int в десятичную систему.
2. Разбить на пять байт для char. (можно с учетом знака)

Я бы сам написал, но нет книжки по ассемблеру.

примерно лист получиться.

Автор: Damarus 18.11.2006, 09:11
Цитата(alpetyan @  18.11.2006,  05:10 Найти цитируемый пост)
Это легко можно сделать вставив маленький ассемблерный код.
1. Перевести шестнадцатеричную int в десятичную систему.
2. Разбить на пять байт для char. (можно с учетом знака)
Я бы сам написал, но нет книжки по ассемблеру.примерно лист получиться.

 smile  smile  smile

Автор: alpetyan 18.11.2006, 11:45
А чего смешного?

Ну не лист два три.

Ассемблер я учил немного.( Юрова )

Сам переводил в нем двойное слово в аски. (только в шеснадцатеричном виде)

Не помню я уже ассемблер. (а качать книгу: связь плохая)

С десятичным видом там вроде даже операции перевода есть.

по мойму это даже все азы.

Я же не хотел сказать, что загнать два байта в один.
А создать строку из пяти байт типа char.
Но плюс анализ знака.

Может я вопрос не понял?

 

Автор: vinter 18.11.2006, 12:03
смешно во-первых то ,что нафиг здесь асм не нужен(геммор лишний)
а во-вторых
Цитата

Я бы сам написал, но нет книжки по ассемблеру.примерно лист получиться.
 smile 
короче решение ты очень оригинальное предложилsmile

Автор: alpetyan 18.11.2006, 12:23
Понял, молчу.

Автор: JackYF 20.11.2006, 14:10
Цитата(vinter @  17.11.2006,  22:02 Найти цитируемый пост)
зато символ интерпретируется как беззнаковое число..


Да неужто?

Код

char chVar;
std::cin >> chVar;


chVar у меня что, беззнаковым, значит, будет? 

Автор: vinter 20.11.2006, 16:00
Цитата

chVar у меня что, беззнаковым, значит, будет? 

это тут причем?? таблица ASCII от 0 дл 255 - я про это говорил..

Автор: JackYF 20.11.2006, 16:22
Цитата(vinter @  20.11.2006,  16:00 Найти цитируемый пост)
это тут причем?? таблица ASCII от 0 дл 255 - я про это говорил.. 


Тогда ясно...
Но все равно, при чем тут таблица ASCII к беззнаковости чего-либо? Самих кодов?
Символ ( char ) не интерпретируется как беззнаковое число. Он знаковым был, знаковым и остается...

Добавлено @ 16:23 
Ладно... все... подвопрос закрываем, а то оффтопик начинается.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)