9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
1

Конвертация из int в char

31.08.2014, 16:22. Показов 2801. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть длина строки которая int или даже 8 байтный long, но если в ней число < 255 то мне нужно её положить в 1 байт (char), но тут начинаються неожиданости

C++
1
2
3
int len = 165;
char c = ( len  & 255 ); // или просто len
std::cout << (int)c << std::endl;
вывод: -91
wtf? Как мне в c получить 165 ?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.08.2014, 16:22
Ответы с готовыми решениями:

Конвертация int в char
Как конвертировать int в char

Конвертация int в char*
Доброго времени суток!!! Пытаюсь конвертировать int в char* стандартными средствами c++....

Конвертация int в char и обратно
Помогите, я запутался... Есть 2 переменных: int a; char b; Допустим a = 0. Нужно...

Конвертация числа в строку (int to char)
Подскажите, какими процедурами пользоваться, каков синтаксис и формат введенных данных. Скажем...

30
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,514
31.08.2014, 23:01 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от DrOffset Посмотреть сообщение
Что-то я запамятовал, где я упоминал DSP?
Не было такого это я чтобы разговор поддержать
Цитата Сообщение от DrOffset Посмотреть сообщение
Так что эти измышления насчет обратного кода скорее из теоретической области и годятся только для общего развития.
С этим согласен
0
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
31.08.2014, 23:13 22
Ага, и Гарвард/Нейман архитекруты, и литл/биг эндиан и прочее - только теория для общего развития... Причем сами выражатели подобного мнения достаточно разбираются в этих вопросах. А потом и появляются на форуме темы подобные этой или "я положил в память двухбайтовый инт а потом взял по однобайтовому указателю первый и второй байты, на одной машине работает а на другой нет". Что далеко за примерами ходить - тут на форуме каждый десятый объявляет целый счетчик цикла типом флоат и спрашивают зачем половину интервала бежать по переменной лонг а вторую по лонг лонг...
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
31.08.2014, 23:15 23
Цитата Сообщение от _Ivana Посмотреть сообщение
Гарвард/Нейман архитекруты, и литл/биг эндиан и прочее - только теория для общего развития
Ну почему же теория. Вполне реальная практика.
0
18828 / 9831 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
31.08.2014, 23:34 24
Цитата Сообщение от _Ivana Посмотреть сообщение
Ага, и Гарвард/Нейман архитекруты, и литл/биг эндиан и прочее - только теория для общего развития... Причем сами выражатели подобного мнения достаточно разбираются в этих вопросах. А потом и появляются на форуме темы подобные этой или "я положил в память двухбайтовый инт а потом взял по однобайтовому указателю первый и второй байты, на одной машине работает а на другой нет". Что далеко за примерами ходить - тут на форуме каждый десятый объявляет целый счетчик цикла типом флоат и спрашивают зачем половину интервала бежать по переменной лонг а вторую по лонг лонг...
Даже не знаю, что на это сказать Зачем приписывать то, о чем речи не было? Взял так все и обобщил.

Добавлено через 2 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
Ну почему же теория. Вполне реальная практика.
Это наверное был сарказм. Только неуместный. Ведь по поводу общего развития было сказано насчет вполне конкретной вещи. Ну или давайте приведем в пример реально существующую в данный момент систему, где применяется обратный код для представления целых отрицательных чисел и я возьму свои слова назад. А вот все остальное он приписал мне совершенно напрасно. Я такого не утверждал и утверждать не собираюсь
0
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
31.08.2014, 23:47 25
DrOffset, я не приписываю вам того, что вы не говорили, это я сам гиперболизирую к чему может привести подобный подход. В любом случае, вы сами недавно мне говорили, что у каждого свой опыт и заблуждения, свои никому не навязываю, но озвучиваю - тут ведь форум, не так ли?
0
18828 / 9831 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
31.08.2014, 23:57 26
Цитата Сообщение от _Ivana Посмотреть сообщение
это я сам гиперболизирую к чему может привести подобный подход.
Хм. Какой подход?
Никакого подхода я не предлагал. Была мысль:
Старая компьютерная система (60е годы) -> отсутствие реального компилятора С (и уж тем более С++) -> разговор о том, как бы программа на С (вышеприведенная ТСом) вела себя на этой машине сводится в теоретическую область.
Никаких других скрытых смыслов тут не было и не надо их искать, и тем более гиперболизировать
Надеюсь теперь мы друг друга поняли.
0
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
01.09.2014, 16:38  [ТС] 27
Вернусь ещё раз к этой теме
Есть строка std::string и при сравнении символа
Код
Str[ pos ] != '}'
компилятор даёт понять что я не прав
Код
warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
1) Почему ошибка если std::string это std::basic_string<char> и символ в кавычках я так понимаю тоже char ( то есть обьявлены одинаково)
2) Почему ни один из этих вариантов не помог избавиться от ошибки
C++
1
2
3
Str[ pos ] != (char)'}'
Str[ pos ] != (signed char)'}'
Str[ pos ] != (unsigned char)'}'
Как быть?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
01.09.2014, 16:42 28
OrmaJever, это, может, на переменные цикла?
C++
1
for(int i = 0; i < ...)
?
Если да, то замените int на size_t
1
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
01.09.2014, 16:44  [ТС] 29
ааа точно, в этой строке ещё pos < Str.size() есть, не увидел, спасибо
аж самому смешно что не прочитал ошибку в которой написано integer
0
KOPOJI
01.09.2014, 16:50
  #30

Не по теме:

OrmaJever, а на сравнение разнознаковых символов вроде и не выдает предупреждений..

0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
01.09.2014, 22:53 31
Цитата Сообщение от KOPOJI Посмотреть сообщение
а на сравнение разнознаковых символов вроде и не выдает предупреждений..
Так же как и для short'ов. А всё потому, что при сравнении происходит расширение до int'ов и проблемы из-за различной знаковости не возникает.
0
01.09.2014, 22:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2014, 22:53
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Опции темы

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