Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Base Conversion Utility

by ikegami (Pope)
on Oct 29, 2008 at 03:46 UTC ( #720148=note: print w/ replies, xml ) Need Help??


in reply to Base Conversion Utility

I had need of this recently, but the syntax is overly complicated. The use of code refs is unnecessary.

{ my @nums = (0..9,'a'..'z','A'..'Z'); my %nums = map { $nums[$_] => $_ } 0..$#nums; sub to_base { my $base = shift; my $number = shift; return $nums[0] if $number == 0; my $rep = ""; # this will be the end value. while( $number > 0 ) { $rep = $nums[$number % $base] . $rep; $number = int( $number / $base ); } return $rep; } sub fr_base { my $base = shift; my $rep = shift; my $number = 0; for( $rep =~ /./g ) { $number *= $base; $number += $nums{$_}; } return $number; } }

You examples becomes

my $UniqueID = to_base( 62, $$ ) . to_base( 62, time );
print to_base( 16, 28 );

If you need your original syntax for some reason, just add

sub GenerateBase { my $base = shift; return ( sub { to_base( $base, $_[0] ) }, sub { fr_base( $base, $_[0] ) }, ); }

Then the user has the choice of syntax at no cost.


Comment on Re: Base Conversion Utility
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://720148]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (7)
As of 2014-12-28 00:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (177 votes), past polls