Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с битами 
:(
    Опции темы
Yline
Дата 3.2.2007, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 3.2.2007
Где: г. Екатеринбург

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



Подскажите пожалуйста, как заменить последний бит первого байта одного файла, первым битом первого байта другого файла.
PM MAIL ICQ   Вверх
GIK
Дата 3.2.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

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



Потоком открывешь файл, считываешь первый эллемент в переменную. Обращеешся к эллементу побитово, например так:

Код

char  a='f' ; //предположим,что  это первый эллемент одного файла
char  b='g'; //это соответственно последний, другого
bool aa=false;
bool bb=false;
if (a & 1){aa=true;} //если эллемент имеет "единичку" в первом бите
if (b & 128){bb=true;}
if(bb){
a= a | 128; //заносим в символ единичку
}
if(aa){
b=b | 1;  //заносим в символ единичку
}

/*
Тут заносишь сиволы обратно в файл
*/






--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Adil'
Дата 3.2.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

#include <io.h>
#include <fcntl.h>

int dst = open("file.dst", O_BINARY | O_RDWR);
if( dst != -1 )
{
  unsigned char bDest;
  if( read(dst, &bDest, 1) == 1 )
  {
    int src = open("file.src", O_BINARY | O_RDONLY);
    if( src != -1 )
    {
      unsigned char bSrc;
      if( read(src, &bSrc, 1) == 1 )
      {
        bDest = ( bDest & 0x7F ) | ( bSrc << 7); //счтиая, что "последний" - это 7-ой бит, а "первый" - 0-ой
        seek(dst, 0, 0);
        if( write(dst, &bDest, 1) != 1 )
          ;//write error
      }
      else
        ;//read error
    }
    else
      ;//open error
    close(src);
  }
  else
    ;//read error
  close(dst);
}
else
   ;//open error




--------------------
Удачи
PM MAIL WWW   Вверх
Yline
Дата 11.2.2007, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 3.2.2007
Где: г. Екатеринбург

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



Хотел открыть в  conteiner_char файл с которым в дальнейшем буду работать, но почему то при открытии файла размером больше 152 байта получается ошибка

Код

//---------------------------------------------------------------------------

#include <vcl.h>
#include <fstream.h>
#include <cstring.h>
#pragma hdrstop

#include "stg.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
  {        
  ifstream file_conteiner (OpenDialog1->FileName.c_str(), ios::binary);
  if (!file_conteiner) return;
  
  int array_size = 0;
  typedef char* charPtr;
  charPtr conteiner_char;
  conteiner_char = new char[array_size];
  conteiner_char ="";

  char conteiner_char_tmp[1]="";                                       

  int size_conteiner = 0;
  while (!file_conteiner.eof())
    {                   
    file_conteiner.read(conteiner_char_tmp, 1);     
    conteiner_char[size_conteiner] = conteiner_char_tmp[0];
    size_conteiner++;
    }
  Memo1->Lines->Add(conteiner_char);
  Edit1->Text = OpenDialog1->FileName;
  Edit3->Text = size_conteiner;
  file_conteiner.close();                                              
  }
}
//---------------------------------------------------------------------------

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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