Avatar billede roo104 Nybegynder
07. oktober 2003 - 20:11 Der er 5 kommentarer og
2 løsninger

Half life query player time

Jeg skal have lavet en float om til timer, minutter, sekunder.
Min float ser fx. sådan her ud 1.14268992E9 og svarer til ca 10 min og 30 sek.

Jeg har prøvat et bruge noget kode fra, http://www.eksperten.dk/spm/352708 men får en helt forkert tid. Det virker ikke som om det er tiden fra xx/xx/1970.
Hvordan får jeg den lavet om til tid?
Avatar billede arne_v Ekspert
07. oktober 2003 - 20:36 #1
Hvad er den float ?
Avatar billede roo104 Nybegynder
07. oktober 2003 - 20:39 #2
Jeg sender en pakke til en server, den svarer tilbage med en pakke som bla. indeholder en float32 som skal laves om til tid

byte[] t = new byte[4];
                for (int time = 0 ; time < 4 ; time++) {
                    t[time] = recvData[x];
                    x++;
                }

                j = 0;
                float time = (t[j++] & 255) + ((t[j++] & 255) << 8) + ((t[j++] & 255) << 16) + ((t[j++] & 255) << 24);

Sådan får jeg lavet min float variabel, den skal på en eller anden tricky måde laves om til 00:10:30
Avatar billede arne_v Ekspert
07. oktober 2003 - 20:55 #3
Jeg fostår ikke helt logikken.

Men ifølge dsj's kode fra det link så skal du erstatte:

float time = (t[j++] & 255) + ((t[j++] & 255) << 8) + ((t[j++] & 255) << 16) + ((t[j++] & 255) << 24);

med:

int time = (t[j++] & 255) + ((t[j++] & 255) << 8) + ((t[j++] & 255) << 16) + ((t[j++] & 255) << 24);
time = StrictMath.round(Float.intBitsToFloat(time));
int hour = StrictMath.round(time/3600);
int min = StrictMath.round((time%3600)/60);
int sec = StrictMath.round(time%60);
Avatar billede arne_v Ekspert
07. oktober 2003 - 20:59 #4
Jeg ville nok iøvrigt også erstatte:

j = 0;
int time = (t[j++] & 255) + ((t[j++] & 255) << 8) + ((t[j++] & 255) << 16) + ((t[j++] & 255) << 24);

med:

int time = (t[0] & 0xFF) + ((t[1] & 0xFF) << 8) + ((t[2] & 0xFF) << 16) + ((t[3] & 0xFF) << 24);
Avatar billede roo104 Nybegynder
07. oktober 2003 - 21:03 #5
Ahhh havde lige løbet pakken forkert igennem, havde ellers brugt dsj's kode.
Printede bare ikke alt andet ud, så kunne ikke lige se fejlen. Den virker også man skal bare lige gøre det rigtigt.
Avatar billede roo104 Nybegynder
07. oktober 2003 - 21:08 #6
Hvis du smider svar dele vi i porten lidt skal du have for din ulejlighed, selvom jeg fandt fejlen selv
Avatar billede arne_v Ekspert
07. oktober 2003 - 21:10 #7
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester