Nowe posty

Autor Wątek: blokawanie strony  (Przeczytany 304 razy)

feller

  • Gość
blokawanie strony
« 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).

chmooreck

  • Gość
blokawanie strony
« Odpowiedź #1 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 ( << >> & | ^ )

  • Gość
blokawanie strony
« Odpowiedź #2 dnia: 2006-09-02, 10:47:51 »
Feller - mozesz do mnie na GG napisać? 1775544 :>?

/usr/bin

  • Gość
blokawanie strony
« Odpowiedź #3 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()...

chmooreck

  • Gość
blokawanie strony
« Odpowiedź #4 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ń ;-)

lo3k

  • Gość
blokawanie strony
« Odpowiedź #5 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

slawnux

  • Gość
blokawanie strony
« Odpowiedź #6 dnia: 2006-09-01, 13:55:08 »
Witam!

Mam takie pytanie.
Mam internet z firmy X i czy jest taka możliwość żeby usługodawca zablokował mi stronę? Ta strona oczywiście wszystkim działa w sieci tylko nie mi:/ a na początku działała jakiś czas... Mam WinXP i czy da się to jakoś sprawdzić czy owa strona jest zablokowana? dodatkowo powiem, że serwer jest na linuxie w którym wyskakuje ta żółta strona jak się neta nie zapłaci :)

pozdrawiam i czekam na pomoc