hotti: Vier Spalten in einem Rutsch

Hi,

mein Script

  
#!/usr/bin/perl  
###########################################################################  
use strict;  
  
print "Content-type: text/plain\n\n";  
  
foreach my $i (0..70){  
 printf("%3d %08b %2X %7d %08b %2X %7d %08b %2X %7d %08b %2X\n",  
  $i,$i,$i,  
  $i+71,$i+71,$i+71,  
  $i+142,$i+142,$i+142,  
  $i+213,$i+213,$i+213  
 );  
}  
  
exit;  
###########################################################################  

bringt dezimal, binär, hex in vier Spalten auf eine DIN A4 Seite, siehe hier.

Die 4. Spalte soll jedoch nur bis 255 gehen, hat jemand ne Idee?

Hotte

--
Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
  1. Hi,

    foreach my $i (0..70){
    printf("%3d %08b %2X %7d %08b %2X %7d %08b %2X %7d %08b %2X\n",
      $i,$i,$i,
      $i+71,$i+71,$i+71,
      $i+142,$i+142,$i+142,
      $i+213,$i+213,$i+213

    Die 4. Spalte soll jedoch nur bis 255 gehen, hat jemand ne Idee?

    255 - 213 ist 42. Und da das bekanntlich *die* Antwort ist, sorge dafuer, dass die Werte der letzten Zeile nur ausgegeben werden, wenn $i noch nicht groesser ist.
    Dazu wirst du wohl zwei printfs draus machen muessen, um das letzte in eine Bedingung kapseln zu koennen.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Hi danke,

      255 - 213 ist 42. Und da das bekanntlich *die* Antwort ist, sorge dafuer, dass die Werte der letzten Zeile nur ausgegeben werden, wenn $i noch nicht groesser ist.
      Dazu wirst du wohl zwei printfs draus machen muessen, um das letzte in eine Bedingung kapseln zu koennen.

      Bedingung in printf(), jow, das geht. Ein zweites printf() würde jedoch wieder von vorn beginnen, aber ein sprintf() zwischendrin, werd ich mal überschlafen ;)

      Hotte

      --
      Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
      1. Hi,

        Bedingung in printf(), jow, das geht.

        Tut es? K.A., kenne mich mit Perl nicht aus.

        Ein zweites printf() würde jedoch wieder von vorn beginnen

        Aber das verstehe ich nun wiederum nicht.
        Was meinst du mit "von vorn beginnen"?

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Hi,

          Ein zweites printf() würde jedoch wieder von vorn beginnen

          Aber das verstehe ich nun wiederum nicht.
          Was meinst du mit "von vorn beginnen"?

          Neue Zeile, neue Spalte... aber ich habs schon online, trotz NDR-Talkshow ;-)

          Code untenstehend,
          Grüße an Alle und schönes Wochenende
          Hotte

            
          #!/usr/bin/perl -w  
          ###########################################################################  
          # Dezimal, Binär, Hexadezimal von 0..255 auf einer DIN A4 Seite zum Drucken  
          # Ausgabe in 4 Spalten  
          ###########################################################################  
          use strict;  
            
          print "Content-type: text/plain\n\n";  
            
          foreach my $i (0..70){  
           my $i4 = $i + 213; # Spalte 4 beginnt mit 213  
           my $s4 = ($i4 <= 255) ? sprintf("%7d %08b %2X", $i4, $i4, $i4) : '';  
           printf("%3d %08b %2X %7d %08b %2X %7d %08b %2X %s\n",  
            $i, $i, $i,  
            $i + 71, $i + 71, $i + 71,  
            $i + 142, $i + 142, $i + 142,  
            $s4  
           );  
          }  
            
          exit;  
          ###########################################################################  
          
          

          Übungen

          Lösungen