/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Bitsjov med bcmath
Fra : Morten Blinksbjerg N~


Dato : 29-07-01 23:57

Hej,

Er der nogen herinde der har prøvet, eller ved hvordan man
arbejder med meget store binære tal under PHP?

Jeg skal bl.a. bruge noget lignende decbin() og bindec()...

--
Morten Blinksbjerg Nielsen
http://www.mbn.dk/


 
 
Lars Petersen (30-07-2001)
Kommentar
Fra : Lars Petersen


Dato : 30-07-01 00:43

> Er der nogen herinde der har prøvet, eller ved hvordan man
> arbejder med meget store binære tal under PHP?
>
> Jeg skal bl.a. bruge noget lignende decbin() og bindec()...

Uhm... Hvad med decbin() og bindec() ?
Med mindre at 32 (31) bit ikke er nok?


--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
When mailing me, remember there is no truth in my mail!



Morten Blinksbjerg N~ (30-07-2001)
Kommentar
Fra : Morten Blinksbjerg N~


Dato : 30-07-01 01:09

> Uhm... Hvad med decbin() og bindec() ?
> Med mindre at 32 (31) bit ikke er nok?

Nej, decbin() og bindec() kan ikke klare så
store tal - over 32 bit...

--
Morten Blinksbjerg Nielsen
http://www.mbn.dk/


Niels Andersen (30-07-2001)
Kommentar
Fra : Niels Andersen


Dato : 30-07-01 06:46

"Morten Blinksbjerg Nielsen" <usenet@mbn.dk> wrote in message
news:9k28po$3hv$1@sunsite.dk...
> Nej, decbin() og bindec() kan ikke klare så
> store tal - over 32 bit...

Skal vi også over 64 bit?
(Måske kan du gætte mine tanker ud fra spørgsmålet...)


--
Mvh.

Niels Andersen



Morten Blinksbjerg N~ (30-07-2001)
Kommentar
Fra : Morten Blinksbjerg N~


Dato : 30-07-01 11:41

> Skal vi også over 64 bit?
> (Måske kan du gætte mine tanker ud fra spørgsmålet...)

Nope, et sted i mellem 32 og 64 er fint nok... :)

--
Morten Blinksbjerg Nielsen
http://www.mbn.dk/



Niels Andersen (30-07-2001)
Kommentar
Fra : Niels Andersen


Dato : 30-07-01 17:30

"Morten Blinksbjerg Nielsen" <usenet@mbn.dk> wrote in message
news:9k3dd5$s84$1@sunsite.dk...
> > Skal vi også over 64 bit?
> > (Måske kan du gætte mine tanker ud fra spørgsmålet...)
>
> Nope, et sted i mellem 32 og 64 er fint nok... :)

Så er det vel bare at tage en halvdel af gangen?

function decbin64($dec) {
$dec_large = $dec/2147483647;
$dec_small = $dec%2147483647;
$bin_large = decbin($dec_large);
$bin_small = decbin($dec_small);
return $bin_large.$bin_small;
}

MEGET utestet, og bygger muligvis på en tanketorsk. Jeg er træt... :)

--
Mvh.

Niels Andersen



Troels Arvin (30-07-2001)
Kommentar
Fra : Troels Arvin


Dato : 30-07-01 23:29

On Mon, 30 Jul 2001 00:57:16 +0200, "Morten Blinksbjerg Nielsen"
<usenet@mbn.dk> wrote:

> Er der nogen herinde der har prøvet, eller ved hvordan man arbejder med
> meget store binære tal under PHP?
Generelt må PHP's "gmp" udvidelse anbefales, hvis man skal arbejde med
store tal eller stor præcision:
http://www.php.net/manual/en/ref.gmp.php

> Jeg skal bl.a. bruge noget lignende decbin() og bindec()...
Desværre giver gmp_init() ikke mulighed for angive binære værdier
direkte. Så p.t. er det lidt vanskeligt at få proppet følgende ind i en
gmp-sammenhæng:
1010101010101010101010101010101010101010

http://marc.theaimsgroup.com/?l=php-dev&m=99652404224205&q=raw findes
et patch til PHP 4.0.6, således at gmp_init accepterer et ekstra
argument, nemlig base:

<?php
$base=2; // binært talsystem
$stringRep='1010101010101010101010101010101010101010';
$gmpRep=gmp_init($stringRep,$base);
?>

Nu kan man udøve alverdens operationer på $gmpnum via
gmp_*-funktionerne. Når man er færdig med sine beregninger, kan man bede
om fx. at få resultatet ud som en streng:

<?php
$resultString=gmp_strval($gmpRep);
print "The result is: $resultString";
?>

--
Greetings from Troels Arvin, Copenhagen, Denmark

Morten Blinksbjerg N~ (31-07-2001)
Kommentar
Fra : Morten Blinksbjerg N~


Dato : 31-07-01 09:48

> <?php
> $base=2; // binært talsystem
> $stringRep='1010101010101010101010101010101010101010';
> $gmpRep=gmp_init($stringRep,$base);
> ?>

Umiddelbart ser det ikke ud til, at jeg kan lave noget lignende
en decbin()?

--
Morten Blinksbjerg Nielsen
http://www.mbn.dk/


Troels Arvin (31-07-2001)
Kommentar
Fra : Troels Arvin


Dato : 31-07-01 10:54

On Tue, 31 Jul 2001 10:47:46 +0200, "Morten Blinksbjerg Nielsen"
<usenet@mbn.dk> wrote:

> Umiddelbart ser det ikke ud til, at jeg kan lave noget lignende en
> decbin()?

Nej - den lider af PHP's generelle begrænsning på 31/32 bits. Derfor min
anbefaling af PHP's gmp-udvidelse, der ikke har nogle begrænsninger.

--
Greetings from Troels Arvin, Copenhagen, Denmark

Morten Blinksbjerg N~ (31-07-2001)
Kommentar
Fra : Morten Blinksbjerg N~


Dato : 31-07-01 11:16

> Nej - den lider af PHP's generelle begrænsning på 31/32 bits. Derfor min
> anbefaling af PHP's gmp-udvidelse, der ikke har nogle begrænsninger.

Men i dit eksempel:

<?php
$base=2; // binært talsystem
$stringRep='1010101010101010101010101010101010101010';
$gmpRep=gmp_init($stringRep,$base);
?>

Da har du jo allerede tallet som binært. Det har jeg ikke...

--
Morten Blinksbjerg Nielsen
http://www.mbn.dk/



Troels Arvin (31-07-2001)
Kommentar
Fra : Troels Arvin


Dato : 31-07-01 11:19

On Tue, 31 Jul 2001 12:16:28 +0200, "Morten Blinksbjerg Nielsen"
<usenet@mbn.dk> wrote:

> Da har du jo allerede tallet som binært. Det har jeg ikke...
OK. Men det bliver blot endnu lettere så - og ingen gmp-patching er
nødvendig.

Lad os sige, at tallet er meget stort (over 31 bits). Put det da ind i
en GMP-repræsentation vha. gmp_init():

$gmpRep=gmp_init('20348903480293846t203472357234723752947293472');
// arbejd videre med gmp-funktioner
// benyt sluttelig gmp_strval() eller lign. til at få noget, der
// kan bruges til output.

Bemærk, at man ved at forsyne gmp med en streng-repræsentation kommer ud
over, hvad PHP måtte have af grænser for lange integers.

--
Greetings from Troels Arvin, Copenhagen, Denmark

Morten Blinksbjerg N~ (31-07-2001)
Kommentar
Fra : Morten Blinksbjerg N~


Dato : 31-07-01 11:36

> Lad os sige, at tallet er meget stort (over 31 bits). Put det da ind i
> en GMP-repræsentation vha. gmp_init():
>
> $gmpRep=gmp_init('20348903480293846t203472357234723752947293472');
> // arbejd videre med gmp-funktioner
> // benyt sluttelig gmp_strval() eller lign. til at få noget, der
> // kan bruges til output.
>
> Bemærk, at man ved at forsyne gmp med en streng-repræsentation kommer ud
> over, hvad PHP måtte have af grænser for lange integers.

Kommer tallet så ikke ud som et decimaltal?

--
Morten Blinksbjerg Nielsen
http://www.mbn.dk/



Troels Arvin (31-07-2001)
Kommentar
Fra : Troels Arvin


Dato : 31-07-01 11:34

On Tue, 31 Jul 2001 12:35:51 +0200, "Morten Blinksbjerg Nielsen"
<usenet@mbn.dk> wrote:

> Kommer tallet så ikke ud som et decimaltal?
Har du prøvet?

--
Greetings from Troels Arvin, Copenhagen, Denmark

Morten Blinksbjerg N~ (31-07-2001)
Kommentar
Fra : Morten Blinksbjerg N~


Dato : 31-07-01 11:42

> Har du prøvet?

Nej, men da gav bare mest mening hvis den spyttede tallet
ud i samme format som den fik det i...

--
Morten Blinksbjerg Nielsen
http://www.mbn.dk/



Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408868
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste