Czy wczytywane bajty z pliku moga miec ujemne wartosci?

0

No wlasnie, czy wczytujac bajty / znaki funkcja get() (klasa ifstream) moge sie spodziewac ujemnych wartosci? Chodzi o tryb binarny. Czy wczytywanie bajtow i znakow ta funkcja to to samo? Jesli nie to jak zrobic petle wczytujaca po jednym bajcie az osiagnie koniec pliku?

0

heh - czego to ludzie nie wymyślą [green]

Bajt to 8 bitów - to czy uznasz taką wartość za liczbę ze znakiem czy bez to już Twoja broszka - bajt jest niezmienny - zmienna jest tylko interpretacja.

0

Tak jak mowi Marooned: deklaruj zmienną ze specyfikatorem unsigned

0

Musi byc signed bo EOF ma wartosc -1, wiec musi byc mozliwosc poprawnego wczytania jej. Ale wielkie dzieki za odpowiedzi, rozwialiscie moje watpliwosci.

//post roku!! [green] - m.M

0

Bajt to bajt czyli zawsze 0..255 a znak konca pliku to skoro -1 to 126 pewnie :P

0

Bajt to bajt czyli zawsze 0..255 a znak konca pliku to skoro -1 to 126 pewnie :P

Jezeli juz to 255 :)
Ale tutaj prawdopodobnie zwracana jest wartosc int, a nie char, wiec to i tak jest poza zakresem normalnie odczytywanym.

0

Heh to 126 to tak na zywca strzelalem :D

0

pamietam dobrze z C64 bo tam programujac w assemblerze trzeba bylo miec dobrze bity i bajty opanowane. jesli interpretujesz sciagniety bajt jako signed lub unsigned to powinno byc to uzaleznione od tego czy ustawiony jest najstarszy bit. Jego ustawienie na 1 sugeruje ze liczba jest ujena. Jedyny klopot przy tym to to, ze wartosc jaka moze przyjac ten bajt jest o polowe mniejsza. zwykle wartosc liczby w bajcie to 28 czyli 256. wylaczajac ostatni bit otrzymujemy 27 czyli 128 wartosci, a dokladnio przedzial 0-127.

pozdrawiam
Mariusz

mala poprawka. chodzilo oczywiscie o 27 i o 26

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