Liste Hexzahlen
Hexer
- perl
Hi zusammen,
ich hab eine Liste aus hexzahlen in einem array.
qw (001 002 00a 00f 01a ...)
Nun möchte ich eine Liste haben, die mir die noch freien Zahlen sortiert ausgibt zwischen 000 und FFF.
Also von der Liste oben wäre das...
000
003
004
005
006
007
008
009
00B
00C
...
FFF
Hat jemand eine Idee wie man das am einfachsten machen kann?
Noch als Nachtrag...
Ich hab mir schon Gedanken gemacht und am ehesten würde ich bislang eine
Schleife von 000 - fff in decimal durchlaufen lassen, das Array mit dem hex-Zahlen in ein hash und dann immer die elemente mit mit hex() gegen den hex-hash prüfen und wenn er nicht existiert in ein eigenes array schreiben.
Aber ob das so "elegant" ist?! Hmm.
hi,
Hat jemand eine Idee wie man das am einfachsten machen kann?
Deine Freunde sind ersteinmal: hex()
hex EXPR
hex Interprets EXPR as a hex string and returns the corresponding
value. (To convert strings that might start with either 0, 0x,
or 0b, see the oct entry elsewhere in this document.) If EXPR is
omitted, uses "$_".
print hex '0xAf'; # prints '175'
print hex 'aF'; # same
Hex strings may only represent integers. Strings that would
cause integer overflow trigger a warning.
Zum Auffinden von Lücken in einer Zahlenreihe, ermittele den kleinsten und den größten Wert, dann durchlaufe die Liste in Integer-Schritten und prüfe, ob der gerade durchlaufene Wert in der Liste vorhanden ist. Ggf. schreibe die Ausgangsliste auf einen hash, da kannst Du mit exists() prüfen.
Hotti
Ok, dann lass ich das mal so ...
foreach my $number ( 0 .. 4095)
{
my $hex_number = sprintf "%03x", $number;
unless(exists $hash{$hex_number})
{
$next_free = $hex_number;
last;
}
}
Ok, dann lass ich das mal so ...
Ok, ich machs mal bischen anders:
my @xli = qw (001 002 00a 00f 01a); # Ausgangsliste
my @in = sort{$a <=> $b}map{hex $_}@xli; # hex umwandeln und sortieren
# ab Kleinstwert bis Größtwert durchgehen
for(my $i = 0; $i < $in[-1]; $i++){
if($in[$i]){
print "OK, ist drin: $in[$i]\n";
}
else{
print "Nicht in der Ausgangsliste: $i\n";
}
}
Hotti