Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись битов в последние 4 байта файла. 
:(
    Опции темы
olegrolik
Дата 25.1.2006, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 25.1.2006

Репутация: нет
Всего: нет



Задание: Суммировать в каждых четырёх байтах файла (кроме первых четырёх и последних четырёх) с 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); // Маскируем, чтобы избавиться от лишних битов, если они накопились
}

PM MAIL   Вверх
Romikgy
Дата 26.1.2006, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



1. Имхо
Цитата(olegrolik @ 25.1.2006, 18:41 Найти цитируемый пост)

const int MASK=0xC0003FFF
это не соответсвует этому
Цитата(olegrolik @ 25.1.2006, 18:41 Найти цитируемый пост)

15 по 29 биты

2.

Код

#include "include.h"
#include <stdio.h>
void main(){
const int MASK=0xC0003FFF;
int fd;
unsigned long slovo,sum=0,CHKS;
fd=open("s.txt",O_RDWR);
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);
}
sum-=CHKS;

lseek(fd,4,SEEK_END);
write(fd,&sum,sizeof(sum));
close(fd);
printf("\nСумма без первого и последнего слова:%08X\n",sum &= ~MASK); 
// Маскируем, чтобы избавиться от лишних битов, если они накопились
}



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
olegrolik
Дата 27.1.2006, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 25.1.2006

Репутация: нет
Всего: нет



Спасибо! Сегодня также написал, только в lseek(fd,4,SEEK_END); кажется вместо 4 писал -4L или типа того.
Насчёт несоответствия. Как не соотвествует? Эта маска нужна чтобы обнулить с 31,30 и с 14 по 0 биты.
Ну вобщем свои заморочки, запись произошла, спасибо!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0772 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.