integer 2 base64

Door Toby hinloopen, 13 jaar geleden, 3.234x bekeken

Kleine simpele class om een getal om te zetten in BASE64.
Zie comments voor de werking.

Werkt prima in combinatie met:
http://www.phphulp.nl/php/scripts/11/1568/

sterker nog, ze zijn voor elkaar gemaakt :P

De class is getuned voor high-speed. Heb extra tijd besteed voor high-performance.
Te gebruiken in static context.

Voorbeeld:

$string = base64::int(123456);
echo base64::int($string);//geeft mijn getalletje weer t'rug.


Functie "base64::multiint()" toegevoegd. De functie is afhankelijk van de "multiint" functie snipper: http://www.phphulp.nl/php/scripts/11/1568/

Met deze functie kan je meerdere integers/booleans opslaan in BASE64. iedere 6 bits aan data (6 booleans bijv., of 2 booleans en 1 getal van 0-15) kost 1 teken/byte aan data.

De functie werkt het beste met een meervoud van 6 bits aan data, met een maximum van 30 bits aan data. (6, 12, 18, 24 of 30 bits aan data)

LET OP:
functie "base64::multiint()" is afhankelijk van
http://www.phphulp.nl/php/scripts/11/1568/

Bekijk de documentatie van dat snippertje voor de werking van de functie.

Voorbeeld van gebruik van de functie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
$userdata
= array(
    'age' => 44,
    'registered' => 1,
    'status' => 7,
    'loggedin' => 0,
);

$userdatalayout = array(
    'age' => 7,  //range: 0-127 ( 2^7-1 = 127)
    'registered' => 1,  //range: 0 or 1 ( 2^1-1 = 1)
    'status' => 3,  //range: 0-7 ( 2^3-1 = 8)
    'loggedin' => 1,
);


$data=base64::multiint($userdata,$userdatalayout);
echo $data;
echo '<pre>'.print_r(base64::multiint($data,$userdatalayout),1).'</pre>';
/*
will output:
****************************
We

Array
(
    [age] => 44
    [registered] => 1
    [status] => 7
    [loggedin] => 0
)
****************************
*/

?>

Gesponsorde koppelingen

PHP script bestanden

  1. integer-2-base64

 

Er zijn 6 reacties op 'Integer 2 base64'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Iltar van der berg
iltar van der berg
13 jaar geleden
 
0 +1 -0 -1
Wat is er mis met base_64_encode/decode?
Toby hinloopen
toby hinloopen
13 jaar geleden
 
0 +1 -0 -1
Zover ik weet is die bedoeld voor strings, niet voor integers.
Storeman storeman
storeman storeman
13 jaar geleden
 
0 +1 -0 -1
Het nut is mij ook een beetje vreemd. Leuk om te zien hoe het werkt, maar de standaard php functie werkt ook prima met integers, de standaard functie is ook ietsie sneller (15-20%, net getest). De output is exact het zelfde van jou en van de php-functie.

Daarnaast zou je die statische variabelen beter vast kunnen definiëren (waarom steeds uitrekenen?) en als constanten kunnen opslaan (ze moeten niet gewijzigd kunnen worden).

De functies kun je ook beter statisch maken. 'public static function'

Ik hoop dat je wat kunt met mijn opbouwende kritiek ;).
Toby hinloopen
toby hinloopen
13 jaar geleden
 
0 +1 -0 -1
@storeman:
"De output is exact het zelfde van jou en van de php-functie."
ow. :P
meen je dat? Dat zou een waste-of-time zijn *gaat het testen*

"de standaard functie is ook ietsie sneller (15-20%, net getest)"
nice (h) Zo dicht op de snelheid van de originele ingebouwde functie.

"De output is exact het zelfde van jou en van de php-functie."
eigenlijk... niet. De originele functie in PHP werkt met + en /, mijn functie met _ en -. Uiteraard kan je daar wel een replace voor gebruiken.

"Daarnaast zou je die statische variabelen beter vast kunnen definiëren. waarom steeds uitrekenen?"
A: ze worden maar 1x uitgerekend.
B: in een constant kan je geen array opslaan.
C: is wel zo handig als je de base64 characters kan veranderen als je wat anders wilt hebben dan _ en -.

Maar je hebt wel gelijk.

Ik ga nu ff de originele functie testen.

EDIT:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?

var_dump(base64::int(32));
echo '<br/>';
var_dump(base64::int(1000));
echo '<br/>';
echo '<br/>';
var_dump(base64_encode(32));
echo '<br/>';
var_dump(base64_encode(1000));
echo '<br/>';

?>


Output:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
string(1) "g"
string(2) "Po"

string(4) "MzI="
string(8) "MTAwMA=="


"De output is exact het zelfde van jou en van de php-functie."
doe ik iets fout? Is er nog een andere base64 functie?
Toby hinloopen
toby hinloopen
13 jaar geleden
 
0 +1 -0 -1
Functie "base64::multiint()" toegevoegd. De functie is afhankelijk van de "multiint" functie snipper: http://www.phphulp.nl/php/scripts/11/1568/

Met deze functie kan je meerdere integers/booleans opslaan in BASE64. iedere 6 bits aan data (6 booleans bijv., of 2 booleans en 1 getal van 0-15) kost 1 teken/byte aan data.

De functie werkt het beste met een meervoud van 6 bits aan data, met een maximum van 30 bits aan data. (6, 12, 18, 24 of 30 bits aan data)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Storeman storeman
storeman storeman
13 jaar geleden
 
0 +1 -0 -1
Mijn excuses, ik had een foutje gemaakt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
base64::int_encode( 5000000 )
TEtA
0.056312084197998 seconden

base64_encode( 5000000 )
NTAwMDAwMA==
0.0093271732330322 seconden


Toch verschillend inderdaad. Scheelt wel flink kwa lengte van de string.
Ik had een foutje gemaakt bij het meten van de tijd. Scheelt toch fors meer, 6x sneller.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. integer-2-base64

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.