2017-06-05 7 views

Antwort

3

Wie Sie bereits gesehen haben, können Sie verwenden, um eine hexadezimale Zeichenfolge in einen numerischen Wert zu konvertieren.

print hex $str; # displays "10" 

Verwenden printf() mit "% x" diese Zahl als Hex-Zahl, die mit dem Ausgang

printf '0x%x', hex $str; # displays "0xa" 

printf '%x', hex $str; # displays "a" 

Add '0x' zum printf() Format zu formatieren hinzufügen Verwenden Sie "02x", um eine führende Null zu erhalten

printf '0x%02x', hex $str; # displays "0x0a" 

Aktualisierung: Wenn Sie das Ergebnis in einer Variablen speichern möchten, verwenden Sie sprintf() statt printf().

my $hex_num = sprintf '0x%02x', hex $str; 
+0

Ich möchte Variable mit einem oder 0x0a setzen Wie kann ich es bekommen? – Alex

+0

@Alex: Siehe mein Update –

0

Sie haben den Zuweisungsoperator weggelassen. Versuchen Sie Folgendes: $ hex_num = hex ($ str);

+0

Aber es wird in Dez konvertieren – Alex

+0

hex() konvertiert in Zahl, ich denke, Perl hält ganze Zahlen als 4 Bytes oder 8 Bytes binäre Int. Sie konvertieren diese Zahl beim Drucken in stdout in dezimal. – ulix

+0

Regex? entferne am Anfang alle Nullen. Wie ? – Alex

Verwandte Themen