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

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

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

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

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

читаю из файла в массив 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 не могу не как конвертировать
Посмотрите здесь:

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

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

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

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

Как int преобразовать в char? - C++
простите за глупый вопрос)) но у меня есть какое нибудь int x=1234 к примеру, как преобразовать это число в char s="1234"

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
216 / 129 / 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
3034 / 2355 / 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
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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
3034 / 2355 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
14.03.2012, 14:36     char to int не могу не как конвертировать #16
Цитата Сообщение от Suroviy Посмотреть сообщение
читаю фаил bmp создаю char масив размером с фаил заганяю тду фаил а теперь самое интерестное из масива char'ов надо заполнить структуру returnStructBMP вот как это сделать?
Так всеже что мешает
Цитата Сообщение от kazak Посмотреть сообщение
А еще можно открыть файл в бинарном режиме, и считать значение непосредственно из файла.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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 не могу не как конвертировать
Еще ссылки по теме:

Как массив char[4] в int ? - C++
Есть массив из 4х char символов (4-е байта), нужно его перевести в unsigned int. Я сделал втупую: unsigned int B=0; ...

Как преобразовать int в char - C++
Подскажите пожалуйста как преобразовать int в char Есть код к примеру: #include&lt;iostream&gt; using namespace std; int main(){ ...

Как преобразовать Int в char*? - C++
Доброго времени суток. У меня есть переменная int, в которой однозначное число, как его преобразовать в char*?

Как превратить число из char в int ? - C++
Здрасте всем... Начал я учится и тут же непонятки, помогите плиз. Как мне на самом простом С++ превратить число из чар в инт ? ...


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

Или воспользуйтесь поиском по форуму:
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 не могу не как конвертировать
Ответ Создать тему
Опции темы

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