Font
[thread]7424[/thread]

zahl kürzen



<< |< 1 2 >| >> 11 entries, 2 pages
Froschpopo
 2005-11-03 09:49
#59630 #59630
User since
2003-08-15
2653 articles
BenutzerIn
[default_avatar]
gibts von perl irgendeinen alogarythmus mit dem man z.b. eine Ziffernreihe zusammenfassen kann und anschließend einen kürzeren Buchstabenstring erhält?

Das muss es ja irgendwie geben, schließlich gibts mehr Buchstaben im Alpabet als Ziffern (nur 0-9).

Also angenommen ich hab ne Ziffernreihe: 2872989898322
nun hätte ich gerne sowas wie: iasSADgi

man könnte ja noch zudem zwischen Groß,-Kleinschreibung unterscheiden um noch einen kürzeren String zu erhalten.\n\n

<!--EDIT|Froschpopo|1131004280-->
master
 2005-11-03 10:00
#59631 #59631
User since
2003-10-20
610 articles
BenutzerIn
[default_avatar]
Ja, der Algo. heisst: HEX :-)
(hexadezimal)\n\n

<!--EDIT|master|1131012368-->
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
renee
 2005-11-03 10:11
#59632 #59632
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
siehe perldoc unpack dazu
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Dubu
 2005-11-03 10:33
#59633 #59633
User since
2003-08-04
2145 articles
ModeratorIn + EditorIn

user image
Ein kleiner Verweis auf den Rechtschreibfaden sei vielleicht erlaubt.

(SCNR)


edit pq: url korrigiert (#entry37 statt ?entry37)\n\n

<!--EDIT|pq|1131016718-->
Froschpopo
 2005-11-03 10:35
#59634 #59634
User since
2003-08-15
2653 articles
BenutzerIn
[default_avatar]
hmm, also hex würde den string nur um die hälfte verkürzen. Man könnte nochmehr sparen wenn die funktion noch zwischen groß-kleinschreibung unterschiede.
esskar
 2005-11-03 11:22
#59635 #59635
User since
2003-08-04
7321 articles
ModeratorIn

user image
[quote=Froschpopo,03.11.2005, 09:35]hmm, also hex würde den string nur um die hälfte verkürzen. Man könnte nochmehr sparen wenn die funktion noch zwischen groß-kleinschreibung unterschiede.[/quote]
ja, dann überleg dir doch was!
Hex steht quasi für 2^16; es gibt auch Base64: steht für 2^64.
Es gibt 26 Buchstaben im Alphabet; mit Unterscheidung von Groß- und Kleinschreibung hast du dann: 2^52 ... viel Spass :p
smallish
 2005-11-03 11:40
#59636 #59636
User since
2005-10-13
28 articles
BenutzerIn
[default_avatar]
Du könnstest dich ja mal damit beschäftigen wie man Zahlen in Zahlen mit anderen Basen umrechnet... dann wirst du schon eine Lösung finden.

http://de.wikipedia.org/wiki/Oktalsystem
master
 2005-11-03 12:13
#59637 #59637
User since
2003-10-20
610 articles
BenutzerIn
[default_avatar]
Du kannst die Zahl auch Binär speichern.

Gäbe dann nur ein paar Byte .. Diese Byte konvertierst du dann z.B. CHARs'

z.B.
%gd# = 2444327643 (kein 1:1 Beispiel)
$i='re5tsFam ^l\rep';$i=~s/[^a-z| ]//g;$\= reverse "\U!$i";print;
Froschpopo
 2005-11-03 15:12
#59638 #59638
User since
2003-08-15
2653 articles
BenutzerIn
[default_avatar]
muss sich aber auch rückgängig machen lassen :) so dass ich irgenwie wieder auf den ursprünglichen string gelangen kann.
Taulmarill
 2005-11-03 15:31
#59639 #59639
User since
2004-02-19
1750 articles
BenutzerIn

user image
das einfachste währe wohl, die zahl in binär umzuwandeln und dann in 6-bit blöcke zu teilen, diesen blöcken, die 64 verschiedene werte annehmen können, müsstest du dann ein bestimmtes zeichen zuordnen. wenn du das "per hand" machen willst, solltest du dir mal die ascii tabelle angucken, sofern du nur druckbare zeichen haben willst.
ich habe auch ein modul namens Mime::Base64 gefunden, aber ich weiss nicht, ob es sich so verhält, wie du das brauchst.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
<< |< 1 2 >| >> 11 entries, 2 pages



View all threads created 2005-11-03 09:49.