PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ascii wert eines zeichens ????



Animal
02.05.2005, 15:28
wie kann ich mir in einer shell (bash) den ascii wert eines zeichens ausgeben lassen ???

MrFenix
02.05.2005, 16:11
Was meinst du genau mit Ascii wert? Den zugehörigen hex / dezimal code?
Wenn ja geh einfach auf Wikipedia http://de.wikipedia.org/wiki/Ascii
oder mach folgendes:
ascii.cpp


#include <iostream>
#include <cstdio>

using namespace std;

int main(int argc, char * argv[]) {
if (argc < 2) {
return 1;
}
int i,j, k;
for (i=1; i<argc; i++) {
for (j=0; j<strlen(argv[i]); j++) {
k = (int)argv[i][j];
cout << hex << k << endl; //wenn dezimal gesucht, einfach das << hex weglassen!
}
if (i != (argc-1)) {
k = (int)' ';
cout << hex << k << endl; //wenn dezimal gesucht, einfach das << hex weglassen!
}
}
return 0;
}

dann


g++ -o text2int ascii.cpp
./text2int <Zeichenfolge, die konvertiert werden soll>

in der Konsole.

skynnyr
02.05.2005, 16:56
echo -n 'a' | od -t x1
Den Byteoffset kannst du dann ja noch mit sed wegschneiden, also:

echo -n 'a' | od -t x1 | sed -n '$!s/^.\{8\}//p'

Wolfgang
02.05.2005, 17:31
Geht auch mit perl sehr gut, warum mit Kanonen auf Spatzen schießen? :D

Gibt dir das Zeichen Hexwert Oktalwert für alles was du da via pipe reinreichst.

echo "abcd"|perl -anle 'map{printf "Char:%s -> hex: %X ->okt: %o\n",$_,ord($_ ),ord($_)}split "",$_'

Ich liebe perl für seine Einzeiler.
:D

Gruß Wolfgang

dramen
03.05.2005, 07:34
wieso so kompliziert?!? das geht doch genauso mit xev:
KeyRelease event, serial 30, synthetic NO, window 0x1c00001,
root 0x48, subw 0x0, time 173896334, (967,-144), root:(971,396),
state 0x10, keycode 42 (keysym 0x67, g), same_screen YES,
XLookupString gives 1 bytes: (67) "g"

... demnach hat g die zahl 67.

skynnyr
03.05.2005, 07:48
@dramen: Wenn du den ASCII Wert des Zeichens in einem Shellscript weiterverwenden willst, hast du mit dem Format der Ausgabe von xev ein Problem. Du hast allerdings Recht, wenn es um die Fülle der Informationen geht :)

dramen
03.05.2005, 08:06
sorry. hab nicht gesehen dass es hier um shell-skripte geht.
demnach ist 'echo -n '1' | od -t x1 | cut -d' ' -f2 | head -1' sicher eine gute lösung. ;)