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

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

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

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

14.03.2012, 00:06. Просмотров 3311. Ответов 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
kazak
3050 / 2371 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
14.03.2012, 14:36 #16
Цитата Сообщение от Suroviy Посмотреть сообщение
читаю фаил bmp создаю char масив размером с фаил заганяю тду фаил а теперь самое интерестное из масива char'ов надо заполнить структуру returnStructBMP вот как это сделать?
Так всеже что мешает
Цитата Сообщение от kazak Посмотреть сообщение
А еще можно открыть файл в бинарном режиме, и считать значение непосредственно из файла.
0
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.03.2012, 14:55 #17
Цитата Сообщение от kazak Посмотреть сообщение
Так всеже что мешает
Ну вообще одним махом прочитать, а потом разбить на части быстрее будет, чем по одному элементу.
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
14.03.2012, 15:14 #18
что мешает?
C++
1
returnStructBMP *header = reinterpret_cast<returnStructBMP *>(&char_buf[0]);
только
C++
1
2
3
pragma pack(1)
struct returnStructBMP {..}
pragma pop
не забудь, если этого не сделано.
1
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 18:55  [ТС] #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);//выдает совсем не то
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
14.03.2012, 19:16 #20
C++
1
printf("%i",*header)
0
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 21:59  [ТС] #21
вот так все работает, спасибо всем за помощь.

C++
1
2
3
4
5
6
unsigned char ch[4] = { 0x06, 0x4B, 0x00, 0x00 };//длжно быть 19206 
int *header = reinterpret_cast<int *>(&ch[0]);
 
int x = *header;
 
printf("%i",x);// ОК
0
fasked
Эксперт С++
4952 / 2532 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
14.03.2012, 23:05 #22
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Suroviy Посмотреть сообщение
выдает семизначные значения, совсем нето что надо
Порядок байтов проверяли?
0
Suroviy
0 / 0 / 0
Регистрация: 13.05.2010
Сообщений: 58
14.03.2012, 23:15  [ТС] #23
через memcpy в упор не получаеться писал в разных напровлениях и вперед и назад, это к вопросу опорядке байт, получилось вот так
C++
1
int *header = reinterpret_cast<int *>(&ch[0]);
не знаю на сколько это эфективно, хотелось бы конечно сразу в переменную без укозателей)) но пока делаю через reinterpret_cast.
0
14.03.2012, 23:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2012, 23:15
Привет! Вот еще темы с ответами:

Как в выделенную память записать поочередно число 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?


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

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

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