С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.65
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
#1

char to int не могу не как конвертировать - C++

14.03.2012, 00:06. Просмотров 3312. Ответов 22
Метки нет (Все метки)

читаю из файла в массив char'ов соответственно есь массив из четырех элементов в каторых записан один int, вот как это кампу объяснить

пример грубо
C++
1
2
3
4
char* pFile;// сюда зачитан фаил где со второго байта начинаеться int
 
int rez;
memcpy(&rez,&pFile[2],4);
мемкоплю char в char все норм, как только пробую в int не то пальто.

вот такая вот трабла что делать не прилажу головы, гугол показывает только как одинарный char в int делать а это я и так знаю...
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2012, 00:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос char to int не могу не как конвертировать (C++):

Как int конвертировать в string или char? - C++
например как сделать это: int x=5; string y="Hello"+x;

Как превести из char* в int и наоборот из int в char*? - C++
Как превести из char* aa='123' в int aa=123 и наоборот из int в char* . Понимаю что самому написать функцию не сложно, но наверняка это...

Как конвертировать массив int в int? - C++
Есть массив целых чисел, как из всех этих чисел получить одно единственное? int myints = {7, 4, 5, 3, 0}; int a; //Хочу чтобы a =...

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

Форматирование строк, char to int & int to char - C++
Покажите как запихнуть число в строку и вытащить его обратно из строки. Вот всё просто в pawn str_to_num(const str) // Тупо...

Как конвертировать String в int - C++
Вот например: string a = 09; Сделать что б: Int b = 9; а также: string a = 17; Сделать что б: Int b = 17;

22
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
14.03.2012, 00:09 #2
а как ты хочешь?
куда ты хочешь записать все (int)char элементы?
0
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 00:14  [ТС] #3
мне нужно 4 chra в один int сделать

один char один байт
один int четыре байта
соответственно в файле int состоит из четырех char'ов (записан четырмя байтами в масив char'ов поподают как четыре элемента)
как привети четырех элементный char'овский int в простой int?
0
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
14.03.2012, 00:16 #4
самое просто что приходить в голову это простой for цикл и 4 char элемента сложить в 1 int
0
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 00:19  [ТС] #5
вот как это сделать!!! синтаксис сложения по байтно в один int я даже не предстовляю.
0
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
14.03.2012, 00:30 #6
незнаю может это ущербно или не поможет но так можешь
C++
1
2
3
4
5
6
7
int factor = 1;
int number = 0;
for(int i = strlen(str) - 1 ;i >= 0 ; i --)
{
   number += (str[i] - 48)  * factor;
   factor *= 10;
}
0
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 00:40  [ТС] #7
str это string или масив char'ов

и что означает " -48 "
0
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
14.03.2012, 00:43 #8
str массив char
каждое char элемент имеет свой интовский вид например (char)48 == 0(int) (char)49 == 1(int)
0
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 00:46  [ТС] #9
да это я понимаю, но у меня то int из четырех char'ов так уж в файле записано.
0
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
14.03.2012, 00:48 #10
до хоть из 10 какая разница все 10 чаров запишутся в 1 инт
0
x1Mike7x
218 / 131 / 6
Регистрация: 06.11.2010
Сообщений: 234
14.03.2012, 00:56 #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
    unsigned char ch[4] = { 0x72, 0xF2, 0xA2, 0x5B };
    int x;
 
    x = ( ( int )ch[ 0 ] << 24 ) + 
        ( ( int )ch[ 1 ] << 16 ) + 
        ( ( int )ch[ 2 ] << 8 ) + 
        ( int )ch[ 3 ];
 
    cout << hex << x << endl;
}
http://codepad.org/w0BV9Bhu
1
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
14.03.2012, 07:23 #12
А еще можно открыть файл в бинарном режиме, и считать значение непосредственно из файла.
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
14.03.2012, 10:20 #13
C++
1
2
3
4
5
6
union {
    char chars[sizeof(int)];
    int int_value;
} iunion;
// в iunion.chars копируешь чары
// в iunion.int_value получаешь int
PS:
а что твой вариант с memcpy не работает? что не так с ним?
0
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.03.2012, 12:02 #14
Цитата Сообщение от Suroviy Посмотреть сообщение
да это я понимаю, но у меня то int из четырех char'ов так уж в файле записано.
Покажи, что именно у тебя в файле.
0
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 14:02  [ТС] #15
фаил проще не бывает

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
struct returnStructBMP
{
                                  //смещение/размер
char   _BmpStructB;         //0     2   Код 4D42h - Буквы 'BM'
char   _BmpStructM;
 
int     _BmpStructSizeFile;        //2      4   Размер файла в байтах
short  _BmpStructRez1;          //6     2   0 (Резервное поле)
short  _BmpStructRez2;           //8        2   0 (Резервное поле)
int     _BmpStructSmeshenie;   //10     4   Смещение, с которого начинается само    изображение (растр).
 
        //Заголовок BITMAP (Информация об изображении)
int     _BmpStructSizeZag     //14      4   Размер заголовка BITMAP (в байтах) равно 40
int     _BmpStructShrina;        //18       4   Ширина изображения в пикселях
int     _BmpStructVisota;        //22       4   Высота изображения в пикселях
short _BmpStructNumberPlosk;   //26     2   Число плоскостей, должно быть 1
short _BmpStructBitNaPx;        //28        2   Бит/пиксел: 1, 4, 8 или 24
int    _BmpStructSjatie;             //30       4   Тип сжатия
int    _BmpStructSizeJatogoImg; //34        4   0 или размер сжатого изображения в байтах.
int    _BmpStructGarizont;        //38      4   Горизонтальное разрешение, пиксел/м
int    _BmpStructVertikal;         //42     4   Вертикальное разрешение, пиксел/м
int    _BmpStructKolCvetov       //46       4   Количество используемых цветов
int    _BmpStructKolVajCvetov;  //50        4   Количество "важных" цветов.
 
//Палитра (Карта цветов для N цветов), если используется
int    _BmpStructPolitra;            //54       4   *N  Палитра
};
вот есть bmp'шка читаю её из файла заганяю в масив char'ов и осталось заполнить структуру, вот что дальше делать с масивом чаров в душе не е...у.

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

читаю фаил bmp создаю char масив размером с фаил заганяю тду фаил а теперь самое интерестное из масива char'ов надо заполнить структуру returnStructBMP вот как это сделать?
0
14.03.2012, 14:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2012, 14:02
Привет! Вот еще темы с ответами:

Как в выделенную память записать поочередно число int, массив char[n], и еще число int - C++
Выделяю память void* Start=malloc(Size); Как туда записать поочередно число int, массив char, и еще число int?

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

Как перевести из char в int? - C++
нужно присвоить значение массива char A в int B, например B=A, но выбивает ошибку, пробовал B=atoi(&amp;A); но выбивает другое число

Как преобразовать int в char? - C++
Прошу подсказать, как же все-таки преобразовывать int в char?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.