2016-11-18 2 views

Antwort

7

Sie können ganz einfach solche Zahlen in einem arithmetischen Kontext Bitshift:

$ hex="0x12345678" 
$ result=$((hex << 1)) 
$ printf "Result in hex notation: 0x%x\n" "$result" 
0x2468acf0 
2

Yes.

Arithmetische Ausdrücke unterstützen Basis 16 Zahlen und alle üblichen C Operatoren.

Beispiel:

$ hex="0xff" 
$ echo $((hex >> 1)) 
127 
7

Natürlich können Sie bitweise Operationen tun (innerhalb einer Arithmetik Erweiterung):

$ echo "$((0x12345678 << 1))" 
610839792 

Oder:

$ echo "$((16#12345678 << 1))" 
610839792 

Der Wert könnte in ein gesetzt werden variabel auch:

$ var=0x12345678   # or var=16#12345678 
$ echo "$((var << 1))" 
610839792 

Und Sie können ODER tun, AND und XOR:

$ echo "$((0x123456 | 0x876543))" 
9925975 

und das Ergebnis in hex zu erhalten, wie gut:

$ printf '%X\n' "$((0x12345678 | 0xDEADBEEF))"  # Bitwise OR 
DEBDFEFF 

$ printf '%X\n' "$((0x12345678 & 0xDEADBEEF))"  # Bitwise AND 
12241668 

$ printf '%X\n' "$((0x12345678^0xDEADBEEF))"  # Bitwise XOR 
CC99E897 
Verwandte Themen