binary tal

Tags:    c++

Hej

Hvor returnere dette ikke de tal jeg har i min binary fil?

Fold kodeboks ind/udKode 


test.bin indholder:
12.58
14.00
8.15

Resultatet bliver:

64
23694
34


Jeg havde forventet dette:
12.58
14.00
8.15


Hvor knækker filmen for mig? :O





6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato


Hej Theis,

Der er flere grunde ...

ios::binary betyder at det er binære tal som læses og forstås. Det som du ser med din text editor er ASCII tegn...

short int er på færre bit end et ascii tegn, i de fleste systemer. Og konverteres slet ikke direkte hvis du vil læse filen binært.

Input til tallene "et", "to", "tre" er ikke blevet beskrevet. Du lægger ikke noget i dem. efter at de er blevet erklæret, og derfor er det tilfældigt hvad de indeholder...

short int kan slet ikke indeholde decimaltal.

...

Start med at lave en metode som skriver tallene til filen binært. Post den her. Derefter prøv at lave en ny hente metode, så kigger vi på den.

Med venlig hilsen
Ieet





Hej Ieet

Tak for hurtigt svar og din opgave.

Således?:

Fold kodeboks ind/udKode 


Dog er jeg usikker på \n Det bruges vel kun i txt filer?

Mvh
Theis



Indlæg senest redigeret d. 24.07.2008 11:53 af Bruger #13955

Hej Theis,

Du er lidt på rette vej...

DOG! Det som du lægger ned i fil er af typen String. Opret:
short int si_a = 12;
float f_b = 3.3;

Og læg ned ved:
fil << si_a;

Ellers er det tekst strenge som du lægger ned i filen. Og du ville jo gerne have tallene ned som binært...

Med venlig hilsen
Ieet





Hej Ieet

Tak, nu skulle den være der.

Fold kodeboks ind/udKode 


Men hvis jeg nu vil gå et skridt videre og læse data fra filen, så kommer jeg i problemer (suprise?) :D

Fold kodeboks ind/udKode 


Her bliver variable et sat til hele ieet.bin filen og returnerer 123.3
Variable to returnerer 6.08565e+36 (sikkert pga. at den er tom)

1)Hvordan får jeg læst de 2 variabler fra ieet.bin filen og lagt dem i hver sin variable (uden at genbruge dem fra den oprindelig kode, da de skal læses fra filen)
2)Hvordan får jeg lavet linje skift i ieet.bin filen. Som det er nu kommer de blot i en lange linje. Der det endl; eller \n der skal benyttes?
Måske fil_ind << endl;

Tak.

Mvh
Theis



Doh, det var bare :

fil_ind << endl;

som manglede. Alt virker korrekt nu.

Tak for hjælpen




Hej Troels,

Lyder godt at alt virker, men du vil stadig kunne få problemer ...

Fold kodeboks ind/udCSharp kode 


Du lægger en short og en float ind, og henter 2 floats ud... det er derfor du har haft behov for fil_ind << endl;

Når du lægger data ind og henter ud i binært format, er det et krav at du henter og indsætter data som har det rigtige format.

Med venlig hilsen
Ieet



t