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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.65
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 00:06     char to int не могу не как конвертировать #1
читаю из файла в массив char'ов соответственно есь массив из четырех элементов в каторых записан один int, вот как это кампу объяснить

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

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

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

один char один байт
один int четыре байта
соответственно в файле int состоит из четырех char'ов (записан четырмя байтами в масив char'ов поподают как четыре элемента)
как привети четырех элементный char'овский int в простой int?
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
14.03.2012, 00:16     char to int не могу не как конвертировать #4
самое просто что приходить в голову это простой for цикл и 4 char элемента сложить в 1 int
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 00:19  [ТС]     char to int не могу не как конвертировать #5
вот как это сделать!!! синтаксис сложения по байтно в один int я даже не предстовляю.
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
14.03.2012, 00:30     char to int не могу не как конвертировать #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;
}
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 00:40  [ТС]     char to int не могу не как конвертировать #7
str это string или масив char'ов

и что означает " -48 "
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
14.03.2012, 00:43     char to int не могу не как конвертировать #8
str массив char
каждое char элемент имеет свой интовский вид например (char)48 == 0(int) (char)49 == 1(int)
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 00:46  [ТС]     char to int не могу не как конвертировать #9
да это я понимаю, но у меня то int из четырех char'ов так уж в файле записано.
A555
51 / 51 / 2
Регистрация: 04.04.2011
Сообщений: 209
14.03.2012, 00:48     char to int не могу не как конвертировать #10
до хоть из 10 какая разница все 10 чаров запишутся в 1 инт
x1Mike7x
 Аватар для x1Mike7x
214 / 127 / 6
Регистрация: 06.11.2010
Сообщений: 234
14.03.2012, 00:56     char to int не могу не как конвертировать #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
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
14.03.2012, 07:23     char to int не могу не как конвертировать #12
А еще можно открыть файл в бинарном режиме, и считать значение непосредственно из файла.
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
14.03.2012, 10:20     char to int не могу не как конвертировать #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 не работает? что не так с ним?
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
14.03.2012, 12:02     char to int не могу не как конвертировать #14
Цитата Сообщение от Suroviy Посмотреть сообщение
да это я понимаю, но у меня то int из четырех char'ов так уж в файле записано.
Покажи, что именно у тебя в файле.
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 14:02  [ТС]     char to int не могу не как конвертировать #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 вот как это сделать?
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
14.03.2012, 14:36     char to int не могу не как конвертировать #16
Цитата Сообщение от Suroviy Посмотреть сообщение
читаю фаил bmp создаю char масив размером с фаил заганяю тду фаил а теперь самое интерестное из масива char'ов надо заполнить структуру returnStructBMP вот как это сделать?
Так всеже что мешает
Цитата Сообщение от kazak Посмотреть сообщение
А еще можно открыть файл в бинарном режиме, и считать значение непосредственно из файла.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
14.03.2012, 14:55     char to int не могу не как конвертировать #17
Цитата Сообщение от kazak Посмотреть сообщение
Так всеже что мешает
Ну вообще одним махом прочитать, а потом разбить на части быстрее будет, чем по одному элементу.
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
14.03.2012, 15:14     char to int не могу не как конвертировать #18
что мешает?
C++
1
returnStructBMP *header = reinterpret_cast<returnStructBMP *>(&char_buf[0]);
только
C++
1
2
3
pragma pack(1)
struct returnStructBMP {..}
pragma pop
не забудь, если этого не сделано.
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 18:55  [ТС]     char to int не могу не как конвертировать #19
C++
1
2
3
unsigned char ch[4] = { 0x06, 0x4B, 0x00, 0x00 };//длжно быть 19206 
int *header = reinterpret_cast<int *>(&ch[0]);
printf("%i",header);//выдает семизначные значения, совсем нето что надо
что не так делаю?

Добавлено через 28 минут
вот так еще пробовал не получилось

C++
1
2
3
4
5
6
7
8
9
int* x = new int[1];
unsigned char ch[4] = { 0x06, 0x4B, 0x00, 0x00 };//длжно быть 19206 
 
memcpy(&x[0],&ch[0],1);
memcpy(&x[1],&ch[1],1);
memcpy(&x[2],&ch[2],1);
memcpy(&x[3],&ch[3],1);
 
printf("%i",x);//выдает совсем не то
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2012, 19:16     char to int не могу не как конвертировать
Еще ссылки по теме:

C++ Как в выделенную память записать поочередно число int, массив char[n], и еще число int
C++ Как преобразовать int в char
C++ Как конвертировать массив int в int?

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

Или воспользуйтесь поиском по форуму:
villu
202 / 202 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
14.03.2012, 19:16     char to int не могу не как конвертировать #20
C++
1
printf("%i",*header)
Yandex
Объявления
14.03.2012, 19:16     char to int не могу не как конвертировать
Ответ Создать тему
Опции темы

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