Wie konvertiert man Dezimal in Hexadezimal in Ubuntu?

1257
samie

Ich verwende eine bash-Datei in Ubuntu und ich schrieb einen ausführbaren Code in diese Datei, der eine Hexadezimalzahl verwenden muss.

Ich habe aber nur Dezimalzahlen, also möchte ich Dezimalzahlen durch einen Befehl automatisch in Hexadezimalzahlen konvertieren.

Dies ist ein Teil meines Codes:

x=1 while [ $x -lt 255 ];do $tc filter add dev eth0 protocol ip parent 10:0 prio 5 u32 ht 2:$x: \ match ip dst 192.168.67.$x flowid 10:$x x=$(( $x + 1 )) done 

In diesem Abschnitt "u32 ht 2: $ x:" in meinem Code muss "$ x" in Hexadezimalform und in einem anderen Abschnitt in Dezimalform sein. Mein Problem ist jedoch in Hexadezimalform. Wie kann ich es in meinen Code konvertieren und verwenden?

0
Ihre Frage ist sehr vage. Ein Beispiel für Ihre Datei wäre nützlich. fpmurphy1 vor 9 Jahren 0
[Dezimal in Hexadezimal in UNIX-Shell-Skript konvertieren] (http://stackoverflow.com/a/379422) DavidPostill vor 9 Jahren 2
@ fpmurphy1 Ich habe meine Frage bearbeitet. samie vor 9 Jahren 0

2 Antworten auf die Frage

1
karel

Der Befehl zum Konvertieren einer Dezimalzahl in Hexadezimalwert lautet:

echo "obase=16; decimal-number"|bc 

wo für Dezimalzahl eine Dezimalzahl ersetzen. GNU bcist eine interaktive Rechnersprache. obaseDefiniert die Umrechnungsbasis für die Ausgabenummer.

Alternativer Befehl, der den Benutzer zur Eingabe einer Nummer auffordert:

printf "Type a number: " && read dec && printf -v hex "%x" $dec && echo $hex 
1
Steven Penny

Sie können die awk Velour-Bibliothek verwenden :

$ velour -n 'print n_baseconv(15, 10, 16)' F 

Oder:

$ velour -n 'print n_baseconv(ARGV[1], 10, 16)' 15 F