ASCII-Zahl wieder in Zeichen umwandeln

Dieses Thema im Forum "Anwendungen" wurde erstellt von stäubel, 09.06.2007.

  1. #1 stäubel, 09.06.2007
    stäubel

    stäubel Doppel-As

    Dabei seit:
    05.10.2006
    Beiträge:
    111
    Zustimmungen:
    0
    Ort:
    Schweiz
    Hallo zusammen

    Weiss jemand wie man bei Linux am einfachsten aus einer Dezimal-Zahl ein ASCII-Zeichen machen kann?

    Also eigentlich genau das umgekehrte von diesem Befehl:

    Eingabe:
    echo ABC | od -A n -t u1

    Ausgabe:
    65 66 67 10

    Also, dass ich z.B. einfach eine Zahl übergeben kann und das
    Zeichen erhalte.

    z.B.

    Eingabe: 65

    Ausgabe: A

    Finde es einfach nicht raus :(
    Wäre für eure Hilfe sehr dankbar.

    Viele Grüsse

    Stäubel
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 root1992, 09.06.2007
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    Naja in einem C-Programm wäre das ganz einfach. printf("%c",65);
    damit würde er "A" ausgeben

    gn8
     
  4. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Falls Du nur nachgucken moechtest, koenntest Du auch 'man ascii' eingeben, um eine Tabelle zu erhalten.
     
  5. #4 Mitzekotze, 09.06.2007
    Zuletzt bearbeitet: 17.02.2008
    Mitzekotze

    Mitzekotze little man

    Dabei seit:
    01.12.2006
    Beiträge:
    750
    Zustimmungen:
    0
    Ich hab mal ein kleines Programm in C geschrieben, welches du verwenden kannst.
    Du musst es nur noch die Dateiendung von .txt in .c umändern und es mit gcc über
    Code:
    gcc -o ASCII\ Umrechner ASCII\ Umrechner.c
    kompilieren.
     
  6. Ale-x

    Ale-x bash lehrling

    Dabei seit:
    13.04.2007
    Beiträge:
    109
    Zustimmungen:
    0
    Ort:
    Osnabrück
    oder einfach aus einer tabelle auschneiden
    beispiel
    ./ascii 065

    Code:
    #!/bin/bash
    #filename:ascii
    if [ "$1" = "" ];then
    echo "keine Eingabe"
    exit
    fi
    clear
    lynx -dump http://www.calo.de/lhtml_z.htm | grep $1
    
     
  7. #6 Wolfgang, 09.06.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Warum erst ein c-Programm, was kompiliert werden muss?
    Für solche Kleinigkeiten ist Perl brauchbar.
    Ich habe dafür einen Alias eingerichtet, der auf folgenden Code verweist.

    Code:
    perl -e 'printf "%c\n", $ARGV[0]' 65
    A
    
    Nix compilieren, Webzugriffe etc
    Einfach Argument übergeben und fertig.

    Gruß Wolfgang
     
  8. #7 Mitzekotze, 09.06.2007
    Mitzekotze

    Mitzekotze little man

    Dabei seit:
    01.12.2006
    Beiträge:
    750
    Zustimmungen:
    0
    Man kann jetzt natürlich nen Beispiel für jede Sprache bringen ;) . Das C Programm ist mir bloß eingefallen weil ich gerade dabei bin C zu lernen.
     
  9. #8 root1992, 09.06.2007
    root1992

    root1992 von IT-Lehrern besessen

    Dabei seit:
    02.01.2006
    Beiträge:
    1.138
    Zustimmungen:
    0
    Ort:
    Märchenwald
    Naja ich denke mal wenn er den int-wert als Positionsparameter übergeben kann wäre es vll besser. Aber mit perl ist es glaube ich die kürzerste Methode, wobei ich es in C machen würde =)
     
  10. #9 Wolfgang, 09.06.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Einfache Aufgaben erfordern einfache Lösungen!
    Genau für solche und ähnliche Dinge wurde einst das geniale Perl erfunden.
    Aber klar, man kann nun auch eine riesen PHP-Engine anwerfen....
    ;)

    Ich wollte halt nur eine schnelle, einfache und flexible Lösung erwähnen.
    Womit jemend seine Probleme löst, bleibt letztenendes der eigenen Entscheidung überlassen.
     
  11. #10 stäubel, 09.06.2007
    stäubel

    stäubel Doppel-As

    Dabei seit:
    05.10.2006
    Beiträge:
    111
    Zustimmungen:
    0
    Ort:
    Schweiz
    Hey cool ihr seit super!!
    Vielen Dank für die tollen Vorschläge.

    Schade, dass es also kein Standard Tool unter Linux gibt,
    welches dies kann :(

    Nachdem ich eure Vorschläge angeschaut hatte, dachte ich,
    ich versuche statt ein Perl-Script mal einfach ein Shell-Script:

    Code:
    #!/bin/bash
    
    for f
    
    do
    
      printf "%c \n" $1
      shift
    
    done
    
    Nur leider betrachtet die Shell im Unterschied zu Perl und C die
    eingegbene Zahlen nicht als Zahl, sondern bereits auch als Zeichen.

    Die Shell gibt also eingegebene Zahlen auch wieder als Zahl aus,
    da Zahlen ja eigentlich auch Zeichen sind.

    Hmm, könnte man der Shell irgendwie sagen, dass sie die Zahlen
    als wirkliche Zahlen ansehen sollte? :think:

    Jedefalls vielen Dank für alles.

    Grüsse

    Stäubel
     
  12. Ale-x

    Ale-x bash lehrling

    Dabei seit:
    13.04.2007
    Beiträge:
    109
    Zustimmungen:
    0
    Ort:
    Osnabrück
    du kannst das ja in ein shell script einbauen oder soll es ganz ohne perl sein
    Code:
    #!/bin/bash
    #ascii
    #www.ale-x.com
    #icq:153228510
    clear
    DEZ=$1
    if [ ! -n "`which perl`" ];then
            echo "perl not found."
            exit
    fi
    
    if [ "$1" = "" ];then
    echo "usage: $0 [ASCII-Wert]"
    echo
    echo "Beispiel $0 65"
    echo "Das ASCII-Zeichen von [65] ist [A]"
    exit
    fi
    DEZTEST=`echo $DEZ | sed 's/[0-9]\{1,3\}/true/' `
    if [ "$DEZTEST" != "true" ];then
       echo "Eingabe ist  falsch"
       exit
    fi
    
    
    printf "Das ASCII-Zeichen von [$1] ist "
    ASCI=`perl -e 'printf "%c\n", $ARGV[0]' $1`
    printf "[$ASCI]"
    echo
    
     
  13. #12 Wolfgang, 09.06.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Naja, wenn du z.B. mehr als ein Argument willst:
    ASCII-TABELLE 1-127
    Code:
    perl -e 'printf "$_\t%c\n",$_ for @ARGV' {1..127}
    
    Oder eben nur drei Argumente:
    Code:
    perl -e 'printf "$_\t%c\n",$_ for @ARGV' 65 66 67
    
    Da Perl für Linux essentiell ist, sollte es überall verfügbar sein.
    Normalerweise liegt es auch im PATH.

    Gruß Wolfgang
     
  14. #13 stäubel, 09.06.2007
    stäubel

    stäubel Doppel-As

    Dabei seit:
    05.10.2006
    Beiträge:
    111
    Zustimmungen:
    0
    Ort:
    Schweiz
    Hey danke vielmals für eure Scripte.
    Funktioniert einwandfrei!!!!

    Naja eigentlich spielt es nicht wirklich eine Rolle ob es Perl
    oder was anderes ist.
    Dachte nur, dass es vielleicht ein wenig unschön ist noch Perl
    mit einem Shell-Script aufzurufen, wenn es die Shell auch könnte.

    Aber da Perl Standard ja dabei ist,
    ist es wohl nicht so schlimm.

    Vielen Dank für euer Interesse und die grosse Hilfe.

    Wenn ich es doch noch mit einem Shell-Skript zustande bringe,
    werde ich euch informieren.

    Thx und viele Grüsse

    Stäubel
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. Ale-x

    Ale-x bash lehrling

    Dabei seit:
    13.04.2007
    Beiträge:
    109
    Zustimmungen:
    0
    Ort:
    Osnabrück
    versuche gerade die perl sachen in ein shell script zu packen und hab folgendes problem

    alles geht ausser
    Code:
    perl -e 'printf "$_\t%c\n",$_ for @ARGV' {1..127}
    
    dann ist die ausgabe nur {1..127}

    der kommt wohl mit den klammern nicht klar aber wie bekomme ich das hin?
     
  17. #15 Wolfgang, 10.06.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Dann hast du eine Bashversion kleiner 3.xx, vermutlich 2.05bxx
    Da kannst du dir natürlich mit $(seq 1 127) helfen.
    Oder du packst es direkt in den Perleinzeiler
    Code:
    perl -e 'printf "$_\t%c\n",$_ for (1..127)'
    
    Alernativ
    Code:
    perl -le 'map{print "$_\t",chr}(1..127)'
    
    Gruß Wolfgang
     
Thema:

ASCII-Zahl wieder in Zeichen umwandeln

Die Seite wird geladen...

ASCII-Zahl wieder in Zeichen umwandeln - Ähnliche Themen

  1. Wiederherstellen von überschriebenen Dokumenten auf debian samba

    Wiederherstellen von überschriebenen Dokumenten auf debian samba: Ich habe ein Problem. Vor Kurzem hat der Trojaner cryptologer einen Schaden eingerichtet. Glücklicherweise gab es eine Sicherung auf...
  2. Bootloader sichern und wiederherstellen mit dd

    Bootloader sichern und wiederherstellen mit dd: Hi, im Netz gibt es einige Guides in denen beschrieben ist wie man mit dd den Bootloader, den gesamten MBR oder den MBR inkl. des versteckten...
  3. Entwicklung von Shotwell wieder aufgenommen

    Entwicklung von Shotwell wieder aufgenommen: Knapp ein Jahr nach der letzten Hauptversion des populären Bildbetrachters »Shotwell« ist mit der Version 0.23 die erste unter der Federführung...
  4. Sourceforge will Reputation wieder herstellen

    Sourceforge will Reputation wieder herstellen: Nach dem erfolgten Verkauf von Sourceforge von Dice an SourceForge Media will die bekannte Projekt-Hosting-Seite ihre beschädigte Reputation...
  5. Gnome 3.20 rückt Tastaturkürzel wieder mehr in den Vordergrund

    Gnome 3.20 rückt Tastaturkürzel wieder mehr in den Vordergrund: Alle Apps, die Tastaturkürzel unterstützen, sollen mit einer Anzeige der verfügbaren Kürzel in Form eines eingeblendeten Fensters ausgestattet...