eine Nummer number
, so dass ihre Ziffern in Teile der Länge gruppiert sind n
(Standardwert von n
3), wobei jede Gruppe eine ascii Wert darstellt, möchte ich number
konvertieren in eine Reihe dieser ASCII-Zeichen. Zum Beispiel:konvertieren eine ganze Zahl in einen String seiner ASCII-Werte
n number Output
==================================
3 70 F
3 65066066065 ABBA
4 65006600660065 ABBA
Hinweis, dass es keine führenden 0
in Zahl ist, so dass der erste ascii Wert wird nicht unbedingt mit n
Ziffern dargestellt werden.
Meine aktuellen Code sieht wie folgt aus:
def number_to_string(number, n=3):
number = str(number)
segment = []
while number:
segment.append(number[:n])
number = number[n:]
return str(''.join('{:0>{}}'.format(chr(segment), n) for segment in number))
Erwartete Ergebnisse:
number_to_string(70)
'F'
number_to_string(65066066065)
'ABBA'
number_to_string(65006600660065, n=4)
'ABBA'
Meine aktuellen Code jedoch einen leeren String zurück. Zum Beispiel gibt es anstelle von 'F' ' '
zurück. Irgendein Grund, warum das ist? Vielen Dank!
P.S .:
Ich wollte ich den Prozess der this question umzukehren, das heißt wiederum eine ganze Zahl in eine Zeichenfolge basierend auf den ASCII-Werte für jedes Zeichen (Zahl) in der Zeichenkette. Aber diese Frage zu lesen, ist keine Voraussetzung, um diese Frage zu beantworten.
Es ist einfacher für den Rest von uns, wenn Sie eine in sich geschlossene Frage stellen. Wir sollten nicht eine andere Frage/Antwort/Kommentar-Set lesen müssen, um dieses zu verstehen. – tom10
Entschuldigung. :( –
Ihr Loop-Zustand ist 'while number:'. Das bedeutet, dass die Schleife weiter läuft, während 'number' noch etwas übrig hat und stoppt, wenn' number' leer ist. Wenn Sie also zum 'return kommen 'statement,' number' ist leer und lässt nichts übrig für den 'format'-Aufruf, daher wird ein leerer String zurückgegeben (ich gehe davon aus, dass' für Segment in num 'ein Tippfehler ist und eigentlich' für Segment 'sein sollte in Zahl ".) –