Форум программистов, компьютерный форум CyberForum.ru

Запись в char числа <-128 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
29.04.2012, 12:33     Запись в char числа <-128 #1
Всем привет! Подскажите пожалуйста, как в переменную типа char записать число -129, причем чтобы потом его можно было бы прочитать без ошибок обратно в int?

Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Venzo
 Аватар для Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
29.04.2012, 12:49     Запись в char числа <-128 #2
можно использовать wchar_t, только там минимальное значение 0
можно записать как массив символов, а потом преобразовывать в int
C++
1
2
3
  char ch[]="-129";
  int i;
  sscanf(ch, "%d", &i);
Somebody
2775 / 1588 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
29.04.2012, 12:52     Запись в char числа <-128 #3
Тут в первую очередь вопрос: зачем это надо?
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
29.04.2012, 13:08  [ТС]     Запись в char числа <-128 #4
ну в общем это нужно для встраивания ЦВЗ в аудио сигнал. данные аудио-сигнала через ifstream read считываются в массив char. затем я их перевожу в int, делаю необходимые преобразования и в итоге получается массив, который нужно перевести обратно в чар и записать обратно в файл. и возникает проблема: числа выходящие за диапазон char записываются неверно.... вот=(

Добавлено через 1 минуту
Цитата Сообщение от ZoRT Посмотреть сообщение
можно использовать wchar_t, только там минимальное значение 0
можно записать как массив символов, а потом преобразовывать в int
C++
1
2
3
  char ch[]="-129";
  int i;
  sscanf(ch, "%d", &i);
боюсь посимвольно записать число в моём случае не подойдёт(
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
29.04.2012, 15:47     Запись в char числа <-128 #5
Почему не использовать изначально int? Ну или short int в крайнем случае.
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
29.04.2012, 16:28  [ТС]     Запись в char числа <-128 #6
Цитата Сообщение от Toshkarik Посмотреть сообщение
Почему не использовать изначально int? Ну или short int в крайнем случае.
просто считываю с помощью ifstream read а он считывает в char*... может можно как то иначе считать, чтобы действительно сразу был int?
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,056
Записей в блоге: 10
Завершенные тесты: 1
29.04.2012, 16:42     Запись в char числа <-128 #7
А так нельзя считать?
C++
1
2
3
4
    ...
    int v;
    is.read( (char *)&v, sizeof( int ) );
    ...
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
29.04.2012, 17:10  [ТС]     Запись в char числа <-128 #8
Цитата Сообщение от lazybiz Посмотреть сообщение
А так нельзя считать?
C++
1
2
3
4
    ...
    int v;
    is.read( (char *)&v, sizeof( int ) );
    ...
можно, но опять же из-за преобразования в char данные изменятся...
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,056
Записей в блоге: 10
Завершенные тесты: 1
29.04.2012, 17:20     Запись в char числа <-128 #9
Цитата Сообщение от Flamе Посмотреть сообщение
можно, но опять же из-за преобразования в char данные изменятся...
Если формат исходный должен быть именно char то обрезай их до значений [-128, 127]. Другого выхода у тебя нет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2012, 17:22     Запись в char числа <-128
Еще ссылки по теме:

C++ Запись в строку char*, входящую в структуру
Чтение из файла и запись в массив char C++
Запись числа в массив char C++
C++ Запись первого слова из файла в массив char
C++ Запись символов из файла в единичный char и строку

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

Или воспользуйтесь поиском по форуму:
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
29.04.2012, 17:22  [ТС]     Запись в char числа <-128 #10
Цитата Сообщение от lazybiz Посмотреть сообщение
Если формат исходный должен быть именно char то обрезай их до значений [-128, 127]. Другого выхода у тебя нет.
=( ну что ж... придётся тогда так попробовать, раз иначе никак

спасибо за помощь)
Yandex
Объявления
29.04.2012, 17:22     Запись в char числа <-128
Ответ Создать тему
Опции темы

Текущее время: 12:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru