Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как Перевести из int a; в char b[1]; ?


Автор: Dimitriy 12.2.2010, 22:02
Искал по форуму, ничего не нашол((((((

как можно в перевести число из int a; (у int a диаппазон от 0 до 255) в char?

есть
:
int a = 35;
char c[1];

нужно получить результат: c[0] = 0х35;

кто знает, подскажите плз!!



Автор: artsb 12.2.2010, 22:24
1.
Код

int a = 35;
//char c[1]; // зачем это?
char c;

c = (char)a;

2.
Код

union {
 int a;
 char c;
};

a = 35;

//c=#

Автор: mes 12.2.2010, 22:29
Цитата(Dimitriy @  12.2.2010,  21:02 Найти цитируемый пост)
int a = 35;
нужно получить результат: c[0] = 0х35;

Dimitriy,  35 и 0x35 не одно и то же..  А о переводе из десятиричной в шестнадцатиричную у Вас в задании не сказано..
так что желательно уточнить что Вы имели ввиду.

Добавлено через 52 секунды
P.S. ответы на такие вопросы надо искать не по форуму, а в книжке.. 

Автор: Dimitriy 12.2.2010, 22:35
Код

int a = 35;
char c;

c = (char)a;


так не работает, я уже пробовал, итог такого кода c = '#',  a должен быть c = '5'....

Цитата

Добавлено @ 22:38
Цитата(Dimitriy @  12.2.2010,  21:02 Найти цитируемый пост)
int a = 35;
нужно получить результат: c[0] = 0х35;

Dimitriy,  35 и 0x35 не одно и то же..  А о переводе из десятиричной в шестнадцатиричную у Вас в задании не сказано..
так что желательно уточнить что Вы имели ввиду.

Добавлено @ 22:30
P.S. ответы на такие вопросы надо искать не по форуму, а в книжке..

я в курсе что не одно и тоже...

извиняюсь что не уточнил,

Нужно перевести из десятиричной в шестнадцатиричную систему, желательно с помошью стандартных средств в С++...

Автор: artsb 12.2.2010, 22:43
Цитата(Dimitriy @  12.2.2010,  22:35 Найти цитируемый пост)
я уже пробовал, итог такого кода c = '#',  a должен быть c = '5'....

Код

int a = 53; // не 35!
char c;
c = (char)a; // с = '5'


Добавлено @ 22:44
Цитата(Dimitriy @  12.2.2010,  22:35 Найти цитируемый пост)
Нужно перевести из десятиричной в шестнадцатиричную систему, желательно с помошью стандартных средств в С++

Это меняет дело...

Автор: mes 12.2.2010, 22:49
Цитата(Dimitriy @  12.2.2010,  21:35 Найти цитируемый пост)
извиняюсь что не уточнил,

Нужно перевести из десятиричной в шестнадцатиричную систему, желательно с помошью стандартных средств в С++...

интересно, а если int к примеру равен 147, чему по вашему должен быть равен char ?!


Цитата(Dimitriy @  12.2.2010,  21:35 Найти цитируемый пост)
извиняюсь что не уточнил,

лучше не за отсутствие уточнения, а за абсолютно не сформулированную задачу.
 smile 

Автор: Dimitriy 12.2.2010, 23:00
Цитата

int a = 53; // не 35!
char c;
c = (char)a; // с = '5'


спасибо artsb за обьяснение. кстати число под номером 35 (0x35) в ASCII находится символ '5'(если я не ошибаюсь), я это имел ввиду, не думал что если поменять местами цифры в числе 35(т.е. 53) получится символ '5' после данного преобразованияsmilesmile

я просто долго уже над этим бьюсь,.. не пинайте сильно за не адыкватное поведение) 

скажу немного проще, есть число(адрес устройства) который лежит в диаппазоне от 0 до 255, чтоб не тратить 3 байта на адрес, необходимо преобразовать его в один байт char,
вот как это сделать, не додумался...

Добавлено через 4 минуты и 47 секунд
Цитата

интересно, а если int к примеру равен 147, чему по вашему должен быть равен char ?!


unsigned char = 0x93

Автор: artsb 12.2.2010, 23:08
Цитата(Dimitriy @  12.2.2010,  23:00 Найти цитируемый пост)
под номером 35 (0x35) в ASCII находится символ '5'

неа

Цитата(Dimitriy @  12.2.2010,  23:00 Найти цитируемый пост)
вот как это сделать, не додумался...

Код

int a = 53;
char c;
c = (char)a;
a = (int)c;

В a будет 53.

Автор: mes 12.2.2010, 23:14
Цитата(Dimitriy @  12.2.2010,  22:00 Найти цитируемый пост)
unsigned char = 0x93

интересно по какому закону у Вас 35 должно превратися в 0x35, a 147 должно остаться 0х93 ?  smile 

Цитата(Dimitriy @  12.2.2010,  22:00 Найти цитируемый пост)
скажу немного проще, есть число(адрес устройства) который лежит в диаппазоне от 0 до 255, чтоб не тратить 3 байта на адрес, необходимо преобразовать его в один байт char,
вот как это сделать, не додумался...

Для этой задачи Вам решение дал artsb еще в самом начале.. И никаких махинадций со сменой систем счисления там не нужно..

Автор: Dimitriy 12.2.2010, 23:16
я идиот))) с самого начала почему то думал что 35 == 0х35 болван я!

спаибо!!!!

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