Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Zeichenkonvertierung auf der Konsole

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Frank
Gast





BeitragVerfasst am: 10. Aug 2003 17:40   Titel: Zeichenkonvertierung auf der Konsole

Moin Mädels,

ich "spiele" mal gerade mit meinen /proc-Ausgaben.
Z.B. erzeugt ein cat /proc/ide/ide1/hdc/identify eine Liste von Hexbytes:
code:
8580 0000 0000 0000 0000 0000 0000 0000
0000 0000 2020 2020 2020 2020 2020 2020
2020 2020 2020 2020 0000 0000 0000 312e
3035 2020 2020 5f4e 4543 2044 5644 5f52
5720 4e44 2d31 3330 3041 2020 2020 2020
2020 2020 2020 2020 2020 2020 2020 0000
0000 0b00 0000 0200 0200 0006 0000 0000
0000 0000 0000 0000 0000 0000 0000 0007
0003 0078 0078 0078 0078 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0407 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
...


Das scheint ganz popliger ASCII-Text zu sein, nur wie bekomme ich den unter Linux raus?
Die Tools hexdump und od sind mir bekannt, aber die können IMHO keine 2-Byte-Hexzahlen in ASCII wandeln, oder?
Gibt's dafür entsprechende Tools?

Danke
Frank
 

pab
Gast





BeitragVerfasst am: 10. Aug 2003 19:01   Titel: Re: Zeichenkonvertierung auf der Konsole

2-byte hex?

glaubst du ernsthaft, dass es sich dabei um utf16 text handelt? ;)


perldoc Unicode::String
 

Frank
Gast





BeitragVerfasst am: 10. Aug 2003 21:49   Titel: Re: Zeichenkonvertierung auf der Konsole

Klar sind das 2-Byte-Hexcodes von ASCII-Zeichen, zumindest die, die einem sofort als solche ins Auge springen:
code:
8580 0000 0000 0000 0000 0000 0000 0000
0000 0000 2020 2020 2020 2020 2020 2020
2020 2020 2020 2020 0000 0000 0000 312e

1 .
3035 2020 2020 5f4e 4543 2044 5644 5f52
0 5 _ N E C D V D _ R
5720 4e44 2d31 3330 3041 2020 2020 2020
W N D - 1 3 0 0 A
2020 2020 2020 2020 2020 2020 2020 0000

0000 0b00 0000 0200 0200 0006 0000 0000
0000 0000 0000 0000 0000 0000 0000 0007
0003 0078 0078 0078 0078 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0407 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
...



Die "20" sind Leerzeichen und daher nicht darstellbar.
Und wie du siehst ist das hier schlicht und einfach die Gerätemeldung meines DVD-Brenners mitsamt Bios-Version.

Aber die ursprüngliche Frage bleibt: gibt es ein Tool, welches solche Ausgaben eben konvertiert?

thx
 

Michael
Gast





BeitragVerfasst am: 11. Aug 2003 7:15   Titel: Re: Zeichenkonvertierung auf der Konsole

man recode ?

Cheers

Michael
 

Jochen
Gast





BeitragVerfasst am: 11. Aug 2003 9:37   Titel: Re: Zeichenkonvertierung auf der Konsole

recode fand ich als Lösungsansatz interessant, hat mich aber nicht weitergebracht. Statt dessen habe ich ein wenig awk gehackt:
code:
#!/bin/awk -f

function isprint(c) {
if ((c > 31 && c < 127))
return 1
return 0
}

{
zk =""
for (i = 1; i <= NF ; i++) {
byte1=strtonum ("0x" substr ($i,1,2))
if (isprint(byte1))
zeichen1=sprintf("%c",byte1)
else
zeichen1="."
byte2=strtonum ("0x" substr ($i,3,2))
if (isprint(byte2))
zeichen2=sprintf("%c",byte2)
else
zeichen2="."
zk = zk zeichen2 zeichen1
}
print $0 "\t" zk
}


Das wäre mit perl und unpack ggf. ein Einzeiler gewesen - na ja, vielleicht postet's ja einer, der unpack besser beherrscht als ich... Man beachte, dass in der Ausgabe die 2 Bytes pro Hexwert verdreht werden müssen, da die Daten Big-Endian sind. Beim Aufruf einfach die Datei als Argument übergeben, also "hex2str /proc/sys/ide/ide1/hdc/identify".

Jochen
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy