Avatar billede cmau Nybegynder
13. oktober 2005 - 13:29 Der er 41 kommentarer og
1 løsning

binært ur

Hejsa

Jeg sad i timen i dag og kede mig lidt, så surfede jeg forbi www.gadgets.dk som jeg gør engang i mellem. Så faldt jeg over et binært ur og tænkte det måtte da kunne lade sig gøre at lave i php.

Kan det lade sig gøre rimelig nemt?.. Og hvordan? Behøves ikke kode, evt bare en nem måde. Hvis der findes funktioner på php.net så link gerne.
Avatar billede cmau Nybegynder
13. oktober 2005 - 13:30 #1
For at være helt præcist er det sådan et ur her jeg så på http://www.timetechnology.com/
Avatar billede nizo Nybegynder
13. oktober 2005 - 13:34 #2
Det er det vel, men paa hvilke maade havde du tænkt dig det? Kender ikke ideen i binære ure ;)
Avatar billede cmau Nybegynder
13. oktober 2005 - 13:35 #3
Hvis du ser denne lille flash film forstår du: http://www.timetechnology.com/how_to_read.php
Avatar billede cmau Nybegynder
13. oktober 2005 - 13:36 #4
Der skal bare ikke være A og B funktioner.
Avatar billede nizo Nybegynder
13. oktober 2005 - 13:40 #5
Hmmm... Det kan man jo nok godt paa en eller anden smart maade lave.

Men det bliver nok en ordenlig sovs af if()'er.
Avatar billede cmau Nybegynder
13. oktober 2005 - 13:43 #6
Det var det jeg var bange for..

Findes der ikke en måde med fx timer, så regner den ud hvilke af 8, 4, 2 og 1 som går op i timetallet. Hvor kun hvis klokken er 1 eller 2 må der bruges 1 tal eller skal der bruges 2.
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 13:43 #7
hvis du nu bruger time() og decbin() kan du vel lave noget smart
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 13:44 #8
mente date()
Avatar billede oversjanten Nybegynder
13. oktober 2005 - 13:45 #9
jeg har lige kastet lidt kode sammen:

<?PHP
echo "Timer: ".decbin(date("H"))."<br>sekunder:".decbin(date("i"));
?>

du kan læse om decbin på php.net:
http://dk.php.net/manual/da/function.decbin.php

og se resulatet på :

www.data-teknik.dk/exptest/spm655703.php
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 13:46 #10
og så kan du jo bare lave 2 billeder der bliver vist med 1.jpg eller 0.jpg
Avatar billede cmau Nybegynder
13. oktober 2005 - 13:48 #11
oversjanten > Det er nu minutter istedet for sekunder.
Avatar billede oversjanten Nybegynder
13. oktober 2005 - 13:50 #12
-->cmau har jeg opdaget...en lille stavebrøller... sorry *G*... det er selvfølgelig rettet
Avatar billede nizo Nybegynder
13. oktober 2005 - 13:50 #13
date(i) staar for Minuter..
Avatar billede nizo Nybegynder
13. oktober 2005 - 13:51 #14
date("i")
;o)
Avatar billede cmau Nybegynder
13. oktober 2005 - 13:53 #15
Men kan stadig ikke komme i tanke om hvordan jeg lige smart kan få det vist som på http://www.gadgets.dk/images/Binarywatch2.jpg
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 13:57 #16
$hour = str_replace("1", "<img src=1.jpg>", decbin(date("H")))
$minutes = str_replace("0", "<img src=0.jpg>", decbin(date("H")))
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 13:57 #17
print $hour."<br>\n".$minutes;

og så bare lav 2 billeder med en slukket diode og en tændt
Avatar billede cmau Nybegynder
13. oktober 2005 - 14:03 #18
dmdisco > Kig lige din kode igennem det vil du slet ikke virke.

Du skal for det første skifte H ud med i i minuts også skal den jo tjekke for 1 og 0 i begge strenge.
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 14:08 #19
hehe ja selvfølgelig skal du lige have en replace mere ind
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 14:09 #20
$hour = str_replace("0", "<img src=0.jpg>", str_replace("1", "<img src=1.jpg>", decbin(date("H"))));
$minutes = str_replace("0", "<img src=0.jpg>", str_replace("1", "<img src=1.jpg>", decbin(date("i"))));
print $hour."<br>\n".$minutes;
Avatar billede cmau Nybegynder
13. oktober 2005 - 14:11 #21
Nå okay jeg lavede ellers lige sådan her:

<?
$hour = decbin(date("H"));
$hour = eregi_replace("0",'<img src="0.gif" alt="">',$hour);
$hour = eregi_replace("1",'<img src="1.gif" alt="">',$hour);
$minutes = decbin(date("i"));
$minutes = eregi_replace("0",'<img src="0.gif" alt="">',$minutes);
$minutes = eregi_replace("1",'<img src="1.gif" alt="">',$minutes);

echo "<center>$hour<br>$minutes</center>";
?>

Men den viser det jo ikke som http://www.gadgets.dk/images/Binarywatch2.jpg
Avatar billede cmau Nybegynder
13. oktober 2005 - 14:11 #22
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 14:13 #23
så skal du bare sørge for at der altid er 4 ciffre i timer og 8 i minutter kan enten tælle længden og ligge de sidste nuller til, ved dog ikke om der er en funktion til at force et binært tal til at være 8 ciffre
Avatar billede cmau Nybegynder
13. oktober 2005 - 14:14 #24
Det er dog 6 i minutter
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 14:16 #25
så 6 :) tja det er vel sjældent at den er 12:179
Avatar billede cmau Nybegynder
13. oktober 2005 - 14:17 #26
Hvad mener du da med det?
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 14:20 #27
grunden til at der kun er 6 lys er vel at 59 kan skrives med 6 tal (111011) derfor har du ikke noget at bruge 8 ciffre til det var bare mig der ikke tænkte mig om
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 14:21 #28
du skal dog lige huske på at hvis du vil have et 24 timers ur altså 00:00 til 23:59 så skal der være 5 ciffre i timer og det bin ur du har vist er 12 timers
Avatar billede oversjanten Nybegynder
13. oktober 2005 - 14:22 #29
Så er der en ny opdateret kode på:
således at den viser timer og minutter i korrekte formater.

www.data-teknik.dk/exptest/spm655703.php
Avatar billede cmau Nybegynder
13. oktober 2005 - 14:23 #30
Det er meningen det skal være 12 timers, men hvordan skulle jeg få minutter til at virke?
Avatar billede xyborx Nybegynder
13. oktober 2005 - 14:27 #31
str_pad() eller sprintf() kan bruges til at udfylde med nuller. Prøvede også lige at omskrive det lidt til min kodestil :)

$tal=array('0'=>'<img src="0.gif" alt="0" />','1'=>'<img src="1.gif" alt="1" />');
$hour=strtr(sprintf('%4d',decbin(date('H'))),$tal);
$min=strtr(sprintf('%6d',decbin(date('i'))),$tal);
echo('<p>'.$hour.'<br />'.$min.'</p>');
Avatar billede cmau Nybegynder
13. oktober 2005 - 14:27 #32
oversjanten > Det virker sgu :D

http://kdp.users.whitehat.dk/bin/ur1.php

Men kan du forklare koden lidt dybere?
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 14:32 #33
hehe det er sku for grineren et ur
Avatar billede cmau Nybegynder
13. oktober 2005 - 14:35 #34
Det er mega fed, regner med at købe dette http://www.gadgets.dk/product_info.php?products_id=392

Så spørger venner hvad er klokken, så siger man fx 14:40 og viser dem uret :D..
Avatar billede oversjanten Nybegynder
13. oktober 2005 - 14:35 #35
her er koden med kommentarer:

// Variabler der sættes til at indeholde timer og minutter i binærtformat
// timer formateres til at indeholde 4 heltal og minutter til 6 heltal
// timer hentes i 12 timer format, ved at anvende date("h")

$timer = sprintf("%04d", decbin(date("h")));
$minutter = sprintf("%06d", decbin(date("i")));;


// array "a" anvendes til bitværdier
// array "b" anvendes til billeder

$a = array("0", "1");
$b = array('<img src="ditbillede" />', '<img src="ditbillede2" />');

// erstatter indholdet i timer med billeder
$timer = str_replace($a,$b,$timer);

// erstat indholdet i minutter med billeder
$minutter = str_replace($a,$b,$minutter);

// udskriv resultatet
echo $timer."<br>".$minutter;
Avatar billede cmau Nybegynder
13. oktober 2005 - 14:40 #36
oversjanten > tusind tak :D :O.. Smider du et svar?
Avatar billede oversjanten Nybegynder
13. oktober 2005 - 14:41 #37
Det var så lidt...
Avatar billede cmau Nybegynder
13. oktober 2005 - 15:24 #38
oversjanten > Der er vist fejl!! Se her: http://kdp.users.whitehat.dk/bin/ den er jo lavet så den kører med 12 timers system, men den viser 15, men den kan jo ikke vise 16?
Avatar billede cmau Nybegynder
13. oktober 2005 - 15:25 #39
Jegt har lavet H om til h, den viser rigtigt nu, men kan jeg være sikker på at den bliver ved med det ?
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 18:31 #40
$timer = sprintf("%05d", decbin(date("H")));
burde jo virke
Avatar billede cmau Nybegynder
13. oktober 2005 - 19:06 #41
hmm gør det ikke, kun med lille h
Avatar billede dmdisco Nybegynder
13. oktober 2005 - 22:35 #42
du skal bruge et decimal mere for at skrive 16+
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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