IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Запись в переменную типа int, C++ Builder 6
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Имеется текстовый файл, из которого производится считывание символов типа char.


int temp=0,i,j;
char ch;
int masT[255]={0};
//...
i=0;
j=0;
while (!feof(f))
{
fread(&ch,sizeof(char),1,f);
temp=temp|ch;
i++;
if (i==4)
{
masT[j]=temp;
temp=0;
i=0;
j++;
}
else temp=temp<<8;
}



когда я таким образом пытаюсь "наполнить" temp, то 1-й считанный символ окажется в итоге самым старшим (левым) разрядом, .., последний - самым младшим.
Мне же нужно наоборот..Объясните пожалуйста, как этого добиться?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Вот так что-ли:
	unsigned int temp = 0, i = 0, j = 0;
...
while (!feof(f)) {
fread(&ch, sizeof(char), 1, f);
temp |= ((unsigned int)ch) << 24;
if(++i == 4) {
masT[j++] = temp;
temp = i = 0;
}
else temp >>= 8;
}

?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


по тому, как было у меня:

qwer - в файле
i=0

ch = 0x71
temp = 0x71
i=1
temp = 0x7100

ch = 0x77
temp = 0x7177
i=2
temp = 0x717700

ch = 0x65
temp = 0x717765
i=3
temp = 0x717765

ch = 0x72
temp = 0x71776572
i=4
temp = 0x71776572

нужно же temp=72657771
Не пойму, как добиться этого, как и куда сдвигать..?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Я написал выше, как этого добиться... Если ты думаешь, что я не проверяю код, перед тем, как написать - ты очень ошибаешься:
Прикрепленное изображение

Видишь, чему равен temp? В 16-ричной системе...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Ещё можно вот так:
char *i = (char *)masT;
while (!feof(f)) fread(i++, sizeof(char), 1, f);



--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
Ещё можно вот так:
Ты можешь гарантировать, что это всегда будет работать так, как нужно?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Прошу прощения, если что-то упустил. Объяснишь? Я неоднозначностей не замечаю...


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.10.2020 19:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name