| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Запись битов в последние 4 байта файла. |
| Автор: olegrolik 25.1.2006, 19:41 |
| Задание: Суммировать в каждых четырёх байтах файла (кроме первых четырёх и последних четырёх) с 15 по 29 биты. Полученную сумму записать в последние 4 байта. Вот проблема в том, что не знаю как записать эти 4 байта в последние 4... Буду рад, если кто поможет... Вобщем программа такая: #include "include.h" void main() { const int MASK=0xC0003FFF; int fd; unsigned long slovo,sum=0,CHKS; fd=open("s.txt",O_RDONLY); read(fd,&slovo,sizeof(slovo)); /* Чтение файла с учетом первого слова */ while(read(fd,&slovo,sizeof(slovo))>0) { /* Очистка битов:31,30,14-0) */ slovo &= ~MASK; /* Суммирование */ sum+= slovo; CHKS=slovo; /* Последнее слово */ printf("%X\n",slovo); } close(fd); sum-=CHKS; printf("\nСумма без первого и последнего слова:%08X\n",sum &= ~MASK); // Маскируем, чтобы избавиться от лишних битов, если они накопились } |
| Автор: Romikgy 26.1.2006, 10:35 | ||
| 1. Имхо это не соответсвует этому 2.
|
| Автор: olegrolik 27.1.2006, 00:27 |
| Спасибо! Сегодня также написал, только в lseek(fd,4,SEEK_END); кажется вместо 4 писал -4L или типа того. Насчёт несоответствия. Как не соотвествует? Эта маска нужна чтобы обнулить с 31,30 и с 14 по 0 биты. Ну вобщем свои заморочки, запись произошла, спасибо! |