Forum: PC-Programmierung Linux Komandozeile (awk etc) Hex zu Bin in Textdatei


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Rote T. (tomate)


Bewertung
0 lesenswert
nicht lesenswert
Vielleicht kann mir jemand schnell helfen, geht drum folgenden hex-Text 
in gleichlangen (mit 0 verlängerten) bin-txt zu wandeln:
Hex:
1
E6994
2
E6995
3
E6996
4
E6997
5
E6998
6
...
Bin (sollte immer gleichlang sein):
1
11110101110101101000
2
11110101110101101001
3
11110101110101101010
4
11110101110101101011
5
...

Mein awk-script, welches aber irgendwie keine neuen Zeilen erkennen will 
(bin vermutlich zu doof):
1
awk 'BEGIN {
2
FS = ""
3
RS = ""
4
a["F"]="1111"
5
a["E"]="1110"
6
a["D"]="1101"
7
a["C"]="1100"
8
a["B"]="1011"
9
a["A"]="1010"
10
a["9"]="1001"
11
a["8"]="1000"
12
a["7"]="0111"
13
a["6"]="0110"
14
a["5"]="0101"
15
a["4"]="0100"
16
a["3"]="0011"
17
a["2"]="0010"
18
a["1"]="0001"
19
a["0"]="0000"
20
a["\n"]="\n"
21
}
22
{
23
for (i=1;i<=FS;i++) printf a[$i]; 
24
}' < hex.txt > bin.txt


Hex-Dateien stammen aus HP-16500C Logikanalyzer und ist der 
Input-Pattern/Output eines PAL20L8, welches ich gerne dem 
Espresso-Logikknacker füttern würde. (müsste dazu eben in bin sein)

Wenn man das Format am HP-LA vorher auf binär umstellt, bekommt man die 
Daten sogar direkt als bin. Nur hab ich das dummerweise anfänglich nicht 
gemacht. Vermutlich ist der betreffende Chip auch hinüber, aber ich 
würde gern noch die alten (als Hex ausgelesenen) Daten testen, bevor ich 
den Chip definitiv als tot erkläre.

Danke für die Hilfe

: Bearbeitet durch User
von Kommandozeile vor dem Frühstück für Alle! (Gast)


Bewertung
0 lesenswert
nicht lesenswert
1
cat hexzeilen.txt ¦ while read h
2
    do
3
        bc <<< "ibase=16; obase=2; $h"
4
    done

Schnellschuss aus d. Ärmel, ungeprüft

von Pizza Hawaii oridschinale (Gast)


Bewertung
2 lesenswert
nicht lesenswert
man hd
man hexdump
man od
man perl pack unpack

von Rote T. (tomate)


Bewertung
0 lesenswert
nicht lesenswert
Skript, welches funktioniert:
1
awk 'BEGIN {
2
FS = ""
3
a["F"]="1111"
4
a["E"]="1110"
5
a["D"]="1101"
6
a["C"]="1100"
7
a["B"]="1011"
8
a["A"]="1010"
9
a["9"]="1001"
10
a["8"]="1000"
11
a["7"]="0111"
12
a["6"]="0110"
13
a["5"]="0101"
14
a["4"]="0100"
15
a["3"]="0011"
16
a["2"]="0010"
17
a["1"]="0001"
18
a["0"]="0000"
19
}
20
{
21
getline < "hex.txt"; for (i=1;i<=length($0);i++)  printf a[($i)]; print ""
22
}' hex.txt > bin.txt

von Md M. (Firma: Potilatormanufaktur) (mdma)


Bewertung
0 lesenswert
nicht lesenswert
Deine Beispieldaten:
> E6994
> E6995
> E6996
> E6997
> E6998
> ...

Was du daraus machen wolltest:
> 11110101110101101000
> 11110101110101101001
> 11110101110101101010
> 11110101110101101011
> ...

Ergebnis deines Skripts:
> 11100110100110010100
> 11100110100110010101
> 11100110100110010110
> 11100110100110010111
> 11100110100110011000

Da stimmte was in deiner Frage einfach nicht.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.