Linux Komandozeile (awk etc) Hex zu Bin in Textdatei

OP #5354919
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
OP #5355674
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
(Firma: Potilatormanufaktur) #5355865
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren