Thread Suche Perlentsprechung für javascript toString() (6 answers)
Opened by KKO at 2010-04-24 12:02

murphy
 2010-04-24 15:53
#136438 #136438
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Für die Zahlensysteme zur Basis 2, 8, 10 und 16 gibt es Möglichkeiten mit Perls eingebauten Funktionen zwischen Strings und natürlichen Zahlen zu konvertieren:
  • Basis 2:
    • Zahl -> String: sprintf('%b', $num)
    • String -> Zahl: oct("0b$str")
  • Basis 8:
    • Zahl -> String: sprintf('%o', $num)
    • String -> Zahl: oct($str)
  • Basis 10:
    • Zahl -> String: sprintf('%d', $num) oder "$num"
    • String -> Zahl: 0+$str
  • Basis 16:
    • Zahl -> String: sprintf('%x', $num)
    • String -> Zahl: hex($str) oder oct("0x$str")


Generische Funktionen für andere Basen gibt es zwar nicht, es ist aber auch nicht schwer, sich die entsprechenden Funktionen selbst zu schreiben:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use 5.012;
use List::Util qw[reduce];

sub str2num {
    my ($str, $base) = @_;
    reduce { $a * $base + $b } 0, split //, $str;
}

sub num2str {
    my ($num, $base) = @_;
    if ($num > 0) {
        num2str(int($num / $base), $base) . ($num % $base);
    }
    else {
        '0';
    }
}


Die Behandlung negativer Zahlen und von Zahlensystemen mit einer Basis größer als 10 seien dem Leser als Übung überlassen ;-)
When C++ is your hammer, every problem looks like your thumb.

View full thread Suche Perlentsprechung für javascript toString()