[c++]zapisywanie liczb do pliku

0

Jak zapisać liczbę int do pliku binarnie, żeby liczb 1 i np. 12645634 zajmowały jedna i druga po 8 bitów?

Wiecie o co chodzi

0

Niestety nie wiadomo o co chodzi, poniewaz w bajcie mozesz zapisac tylko 255 wartosci ;p

0

właśnie o to mi chodzi.
mam liczbę 45 i chce ją zapisać w pliku o rozmiarze 1 bajta, a nie jak standardowo 2 bajtów.
Jak to zrobić?

0

W jakim obecnie używanym kompilatorze int ma 2 bajty? Po prostu użyj char?

0

mam takie coś

    int a;
a=123;
    ofstream we("nowy.txt",ios::binary);
we<<a;
we.close();
cout<<a<<endl;

i teraz plik ma rozmiar 3 bajtów.

jeden bajt ma rozmiar 255 i teraz chce aby ta zmienna a byłą zapisana w jednym bajcie.

wiecie już co chodzi?

0

Dobra juz wiem ocb.

int liczba = 23123123;

for(i = 0; i < 4; i++)
   fprintf(fp, "%c", liczba & 0xFF000000 >> i * 8);

0

Dobra jednak nie wiem. Pisalem posta, a Ty w tym czasie dodales.
Liczbe masz zapisana w jednym bajcie, a ze otwierasz plik txt to on ma dwa bajty pierwsze TX z tego co pamietam.

0

No właśnie nie wiesz... żeś zmienił endiany, zapis przez << jest zawsze w formie tekstu, nie binarnej.

0
char zuo = 69;
ofstream fout("zuo.bin");
fout.write(&zuo, sizeof(zuo)); 
0

Dobra wycofuje tamto nie ma zadnego TX, Świętowit ma racje.

0

wielkie dzięki, a jak to prawidłowo wczytać?
żeby uzyskać tą liczbę?

0

Zgodnie z logiką - zamienić write na read?

0

wow bez przesady tak głupi to nie jestem
napisałem takie coś i nie działa

char zuo;
ifstream fout("zuo.bin");
fout.read(zuo, 1); 
0

Coś słabo z tym zamienianiem - read(&zuo, 1);

0

wiem, że tak trzeba ale nie działa.

próbowałem wczytanie binarnie, przez wskaźnik itp. na różne sposoby i nie działa.

Może to źle wyświetlam bo robię to przez

cout<<zou;
0

cout << int(zuo); ?

0

dzięki naprawdę [browar] należy cię

0

Pamiętaj, że char to tak typ znakowy jak i numeryczny, żeby tego normalnie używać to albo musisz rzutować po wczytaniu albo do inta przypisać. Typy mają różnie rozmiary nie bez powodu.

0

sorka, ale jeszcze jedna żecz męczy mnie, a co z większymi liczbami typu 23544325?
jaki je zapisać

0

Tak jak poprzednie tylko jako int zamiast char? No ale będą już wtedy zajmować 4 bajty.

0

ale jak zapisać int przez write?
bo u mnie nie idzie.
byś mógł mi to napisać i daje ci spokój

0
{ // zapis
  int zuo = 69666;

  ofstream fout("zuo.bin", ios::binary);
  fout((char *)&zuo, sizeof(zuo));
}

{ // odczyt
  int zuo = 0;

  ifstream fin("zuo.bin", ios::binary);
  fin((char *)&zuo, sizeof(zuo));

  cout << "zuo = " << zuo << endl;
}
0

a po co i czym jest znaczek &.
ja go tylko znam jak referencja lub przekazanie adresu, a takiego czegoś nie widziałem

0

No bo służy pobraniu adresu? Funkcja write oczekuje adresu danych, typu char *, oraz ilości danych do zapisania. Tą samą funkcją zapisuje się struktury, tablice, prawie wszystko.

0

jak dam liczbę 10 cyfrową to wyskakuje błąd 13 "[Warning] this decimal constant is unsigned only in ISO C90 "

w dev

nawet jeśli dam long long int

0

Dodaj ll na końcu literału - 1234567890ll. Inna sprawa, że w C++ nie ma long long, jest jedynie w C... Weź człowieku jakąś książkę i poczytaj o podstawach.

0

dobra mam wiem, żę long long jest źle ale w c++ jest
_int64

0

Nie, w C++ nie ma, jest w rozszerzeniach konkretnego kompilatora. W C++ w ogóle nie ma typów o określonych rozmiarach, nawet char nie musi mieć rozmiaru bajtu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1