84 Stimmen

Formatiere ints in einen String aus Hexadezimalzahlen

Ich muss eine Zeichenfolge aus Hexadezimalziffern aus einer Liste von zufälligen ganzen Zahlen (0-255) erstellen. Jede Hexadezimalziffer sollte durch zwei Zeichen dargestellt werden: 5 - "05", 16 - "10", usw.

Beispiel:

Eingabe: [0,1,2,3,127,200,255], 
Ausgabe: 000102037fc8ff

Ich habe es geschafft, folgendes zu erstellen:

#!/usr/bin/env python

def format_me(nums):
    result = ""
    for i in nums:
        if i <= 9:
            result += "0%x" % i
        else:
            result += "%x" % i
    return result

print format_me([0,1,2,3,127,200,255])

Allerdings sieht das ein bisschen umständlich aus. Gibt es eine einfachere Möglichkeit?

0 Stimmen

0voto

Marco Punkte 470

Beispiel mit ein wenig Verschönerung, ähnlich der sep-Option, die in Python 3.8 verfügbar ist

def prettyhex(nums, sep=''):
    return sep.join(f'{a:02x}' for a in nums)

numbers = [0, 1, 2, 3, 127, 200, 255]
print(prettyhex(numbers,'-'))

Ausgang

00-01-02-03-7f-c8-ff

0voto

RITA KUSHWAHA Punkte 131

Mit der Python-String-Methode format() kann dies erreicht werden.

Code:

n = [0,1,2,3,127,200,255]
s = "".join([format(i,"02X") for i in n])
print(s)

Output:

000102037FC8FF

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X