Nowe posty

xx Co wybrać? (1)
Wczoraj o 21:54:29
xx Zlecę skrypt w bashu (0)
2020-02-19, 14:07:39
xx Nadawanie praw katalogom takich, jak nazwa usera (4)
2020-02-17, 14:15:18
xx Fedora na laptopie HP 15-bs152nw brak wifi (44)
2020-02-16, 12:17:18
xx Komputer do nauki linuxa (10)
2020-02-15, 07:03:28
xx Patronat serwisow internetowych. (1)
2020-02-13, 00:13:24
xx Xfce-terminal v 0.8.7.4 - jak ustawić wklejanie skopiowanego tekstu? (3)
2020-02-12, 18:59:24
xx HD ISO, jak odzyskać starsze pliki (6)
2020-02-12, 10:54:31
xx QEMU KVM gpu passthrough brak obrazu (4)
2020-02-11, 17:05:06
xx i7-9700 + Intel H370 (0)
2020-02-11, 12:36:55

Autor Wątek: Otwieranie pliku bit po bicie  (Przeczytany 5369 razy)

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 2
    • Zobacz profil
Otwieranie pliku bit po bicie
« dnia: 2006-09-02, 09:30:43 »
Cześć :-)

Na jednym laptopie (a włąściwie - laptopie mojej kobietki, co tłumaczy ilość laptopów w tej konfiguracji bez posądzania mnie o zawirowania w tym temacie ;-) mamy WinXP (Service Pack 2) oraz internet (bezprzewodowy iPlus na PCMCIA). Chciałbym zainstalować na drugim laptopie Linuxa (taki najtańszy Acer 2430 -> CeleronM 1,5G itp.), natomiast najistotniejsza sprawa to pytanie, czy łącząc oba komputery przez karty sieciowe, istnieje mozliwość ich komunkowania się oraz - co najistotniejsze - udostępniania przez lapa z WinXP łącza internetowego tak, by ten z Linuxem był w stanie z niego równocześnie korzystać (no ten iPlus to dla nas jedyny sposób na neta :-) ? Ewentualnie - którą dystrybucję Linuxa wybrać, aby ta sztuczka miała sznse na sukces :-) ?
Dziękuję i pozdrawiam serdecznie!

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 14
    • Zobacz profil
Otwieranie pliku bit po bicie
« Odpowiedź #1 dnia: 2006-09-01, 19:28:46 »
Witam. Moje pytanie jak w temacie - w jaki sposob otwierac pliki BIT po BICIE, a nie BAJCIE?

przykladowy kod:

bool dane;
fread(&dane, sizeof(bool), sizeof(bool), fp);

otwiera mi jeden bajt.

Sam sie domyslilem ze sizeof(bool) wynosi 1, czyli tyle samo co sizeof(char).
Ja nie chce otwierac po bajcie tylko po bicie. Czy takie cos jest mozliwe?
Ostatecznie moge wyciagnac bool'e z char'a, ale juz zapisywac to ja POTRZEBUJE w programie po bicie a nie po bajcie. Wie ktos jak to jest mozliwe? Dziekuje serdecznie za wszelka pomoc.

PS. Oczywiscie program pisany jest  w C (preferuje czyste C), rozwiazanie moze byc jednak takze w C++. Ostatecznie  (jezeli po prostu inaczej sie nie da) jakies przerwanie w asm (chociaz mi sie wydaje ze to nie ma roznicy).

Offline Piotr Chmura

  • Administrator
  • Guru
  • *****
  • Wiadomości: 5060
    • Zobacz profil
Otwieranie pliku bit po bicie
« Odpowiedź #2 dnia: 2006-09-01, 19:46:12 »
no niestety... bedziesz sobie musial sam poskladac zapisywane bity w bajty...

jesli nie wiesz jak, to zainteresuj sie operatorami dzialajacymi na bitach ( << >> & | ^ )

Offline

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 337
    • Zobacz profil
Otwieranie pliku bit po bicie
« Odpowiedź #3 dnia: 2006-09-02, 10:47:51 »
Feller - mozesz do mnie na GG napisać? 1775544 :>?

Offline

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 5
    • Zobacz profil
Otwieranie pliku bit po bicie
« Odpowiedź #4 dnia: 2006-11-11, 21:40:27 »
bajt to minimum jakie można czytać
jeśli nie zależy ci na szybkości to sprubuj to:
  ! plik musi już istnieć i być odpowiedniej długości
    np: dd if=/dev/zero of=PLIK bs=100 count=1
    fp = fopen(fname,"r+") => read/write

int read_bit( unsigned num,FILE *fp )
  {
    unsigned char c;
    if( fseek(fp,num>>3,SEEK_SET) != 0 )  return -1;
    if( fread(&c,1,1,fp) != 1 )        return -2;
    return c & 1<<(num&7);
  }
int write_bit( unsigned num,FILE *fp )
  {
    unsigned char c;
    if( fseek(fp,num>>3,SEEK_SET) != 0 )  return -1;
    if( fread(&c,1,1,fp) != 1 )        return -2;
    c |= 1<<(num&7);
    if( fseek(fp,num>>3,SEEK_SET) != 0 )  return -3;
    if( fwrite(&c,1,1,fp) != 1 )        return -4;
    return 0;
  }
oczywiście dużo lepszy efekt będzie gdy użyjesz tablicy zamiast
ciągłego fssek()/fread()...

Offline Piotr Chmura

  • Administrator
  • Guru
  • *****
  • Wiadomości: 5060
    • Zobacz profil
Otwieranie pliku bit po bicie
« Odpowiedź #5 dnia: 2006-11-12, 12:24:52 »
uwaga !!!
fseek jest bardzo kosztowną (pod względem czasu) operacją - przynajmniej tak wynika z moich osobistych doświadczeń ;-)

Offline Wojciech Orłowski

  • Users
  • Nowy na forum
  • *
  • Wiadomości: 2
    • Zobacz profil
Otwieranie pliku bit po bicie
« Odpowiedź #6 dnia: 2006-11-24, 16:14:09 »
2006-09-01 19:28:46 feller napisał:

> Witam. Moje pytanie jak w temacie - w jaki sposob otwierac pliki BIT po BICIE, a nie BAJCIE?
 >
 > przykladowy kod:
 >
 > bool dane;
 > fread(&dane, sizeof(bool), sizeof(bool), fp);
 >
 > otwiera mi jeden bajt.
 >
 > Sam sie domyslilem ze sizeof(bool) wynosi 1, czyli tyle samo co sizeof(char).
 > Ja nie chce otwierac po bajcie tylko po bicie. Czy takie cos jest mozliwe?
 > Ostatecznie moge wyciagnac bool'e z char'a, ale juz zapisywac to ja POTRZEBUJE w programie po
 > bicie a nie po bajcie. Wie ktos jak to jest mozliwe? Dziekuje serdecznie za wszelka pomoc.
 >
 > PS. Oczywiscie program pisany jest  w C (preferuje czyste C), rozwiazanie moze byc jednak takze
 > w C++. Ostatecznie  (jezeli po prostu inaczej sie nie da) jakies przerwanie w asm (chociaz mi
 > sie wydaje ze to nie ma roznicy).

jeden BAJT to 8 bitow