Diskuze: převod
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Nejake tipy najdes na php.net. Pouzil by som asi tuto funkciu
http://php.net/manual/en/function.decbin.php#92368
Bez použití funkce decbin
Převod z desítkové do dvojkové soustavy spočívá v postupném dělení
výchozího čísla (a vzniklých podílů) dvojkou, přičemž se zapisuje
zbytek po dělení. Postupuje se až do chvíle, kdy dostaneš výsledek
nula.
Příklad, chci převést číslo 23:
23 : 2 = 11 => zb. 1
11 : 2 = 5 => zb. 1
5 : 2 = 2 => zb. 1
2 : 2 = 1 => zb. 0
1 : 2 = 0 => zb. 1
Výsledek pak přečteš odspoda: 10111
V PHP bych to řešil, jak již Ondřej zmínil, cyklem, ale hezčí kód bude s cyklem while. Budeš mít nějakou proměnnou, ve které budeš skladovat mezivýsledek a v podmínce budeš mít > 0.
Zbytek po dělení zjistíš modulem: $mezivysledek % 2
Nový mezivýsledek zjistíš zaokrouhlením dolů: floor($mezivysledek / 2)
Pokud budeš výsledek zapisovat do řetězce, např. takto:
$string .= $mezivysledek % 2;
musíš ho nakonec otočit: strrev($string)
Doufám, že je to dost srozumitelné
Na php.net pod kazdym prikazom mas vacsinou aj alternativne riesenia, takisto ak si kliknes na moj link, tak tam najdes hotove riesenie bez pouzitia funkcie decbin. Je smiesne, ze si si tam ani neklikol a dal si mi rovno minusko. Lukas, pre teba zvlaste, tu plne funcknu funkciu odpisem sem
<?php
function BCDec2Bin($Input='') {
$Output='';
if(preg_match("/^\d+$/",$Input)) {
while($Input!='0') {
$Output.=chr(48+($Input{strlen($Input)-1}%2));
$Input=BCDiv($Input,'2');
}
$Output=strrev($Output);
}
return(($Output!='')?$Output:'0');
}
?>
Ať klikám, jak klikám, nic se neděje... A to ani nehledím na to, že já
jsem ti to mínus nedal. Přiznávám se, na odkazovanou stránku jsem sice
koukal, ale špatně, zřejmě už jenom proto, že jsi odkazoval na dokumentaci
pro funkci decbin.
Z původního příspěvku tazatele jsem pochopil, že má zřejmě za úkol
nějaké řešení vymyslet a ne opsat funkci z netu, navíc takovou, která
používá rozšíření (v tomto případě BCMath), bez kterého se jde dost
dobře obejít. Proto jsem se ho snažil nasměrovat nějakou cestou, aby
pochopil, o co jde, a funkci ať si dá do kupy sám.
Zobrazeno 6 zpráv z 6.