ASCII-Zahl wieder in Zeichen umwandeln

stäubel

stäubel

Doppel-As
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
 
Naja in einem C-Programm wäre das ganz einfach. printf("%c",65);
damit würde er "A" ausgeben

gn8
 
Falls Du nur nachgucken moechtest, koenntest Du auch 'man ascii' eingeben, um eine Tabelle zu erhalten.
 
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.
 
Zuletzt bearbeitet:
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
 
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
 
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.
 
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.

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 =)
 
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.
 
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
 
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
 
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
 
Hey danke vielmals für eure Scripte.
Funktioniert einwandfrei!!!!

du kannst das ja in ein shell script einbauen oder soll es ganz ohne perl sein

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.

Da Perl für Linux essentiell ist, sollte es überall verfügbar sein.
Normalerweise liegt es auch im PATH.
Gruß Wolfgang

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
 
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?
 
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?

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
 
[root@jacque tools]# echo $BASH_VERSION
3.00.16(1)-release
 
[root@jacque tools]# echo $BASH_VERSION
3.00.16(1)-release

Dann hast du in deinem Script einen Fehler.

Der Einzeiler direkt sollte auch bei deiner Version der Bash laufen.

Ich verstehe allerdings nicht so recht, wozu du noch ein Script brauchst, wenn die Argumente auch direkt an Perl übergeben werden können.


Gruß Wolfgang
 

Ähnliche Themen

Rückgabe eines Befehls

Funktionstasten in ksh-Shell abfragen/abfangen

Onlineumfrage programmieren (mehrseitige HTML Formular an PHP übergeben)

Server-Monitoring mit RRDTool

Zurück
Oben