Khaine
#programowanie #cpp #qt

http://www.qtcentre.org/threads/65502-QDataStream-gt-gt-(int)-skipping-one-byte

Mirki ma ktoś choćby JAKĄKOLWIEK teorię co tu może być nie tak? Bo ja już nie mogę rozumem ogarnąć w jaki sposób to może nie działać :/
  • Najlepsze
  • Wszystkie komentarze
lionbest
@Khaine: Jeżeli tylko otwierając plik do QFile::open nie dałeś flagi QIODevice::Text to powinno być ok.
lionbest
@Khaine: Użyłeś QDataStream do wczytywania danych nie wyprodukowanych przez niego.
Co do pomijania znaków to zgaduję że QDataStream alignuje inta i pomija 3 znaki.
Khaine
Khaine Autor
0
@lionbest: No ale co z tego, że dane nie są produkowane przez niego? Przecież do tego momentu wczytał setki bajtów poprawnie. Łącznie z intami, które były już kilkukrotnie wcześniej odczytywane, oraz tablice charów, przerabiane na QStringi.

A QDataStream nie pomija 3 znaków, tylko dokładnie jeden. Zwróć uwagę na plik od środka. Kodowanie little endian.
lionbest
@Khaine: To z tego że QDataStream może robić cokolwiek dla optymalizacji, nie wnikaj.
Wyklep to ręcznie z bufora tak jak ostatnio mirki ci proponowały.
Khaine
Khaine Autor
0
@lionbest: Doszedłeś do końca tematu? Widziałeś co ja tam robię?
lionbest
@Khaine: Nie. Lol to wygląda tak jak by ktoś zamieniał 0xD czyli '\r' na 0xA czyli '\n', hm czyżby otwarcie pliku było defaultowo z QIODevice::Text?
Khaine
Khaine Autor
0
@lionbest: Nie mam bladego pojęcia co tam się o--------a :D Raw data powinienem odczytać, bez jakiegokolwiek kodowania.

http://doc.qt.io/qt-4.8/qdatastream.html#raw
lionbest
@Khaine: No tak tylko o ile dobrze pamiętam to ta zamiana jest robiona po stronie systemu nie po stronie biblioteki, nawet takiej jak libc. Więc ważne aby otwierać plik jako binarny.
Khaine
Khaine Autor
0
@lionbest: Hmm, da się powiedzieć Qtowi, że ten plik jest binarny?
Khaine
Khaine Autor
  • adult
0
Treść przeznaczona dla osób powyżej 18 roku życia...