2017-08-04 4 views
0

Ich möchte die key von Runde 10 basierend andere key berechnen, funktioniert es sehr gut, wenn ikk eine Zeichenfolge ist, so wie man es in eine Zeichenfolge konvertieren?Wie setzt man eine Hexadezimalzahl als String?

def test(): 
    ##### ikk= '000102030405060708090a0b0c0d0e0f' ===> It works!!! 
    ikk= 000102030405060708090a0b0c0d0e0f 
    ik=str(ikk) 
    data = [re.findall('..', item) for item in key.split('\n')] 
    for item in data: 
     if item: 
      result = [int(x, 16) for x in item] 
      print(result) 
      result = keyScheduleRounds(result, 0, 10) 
      tt=''.join(["%02x"%d for d in result]) 
      print(tt) 

Fehler, die ich gefunden:

ik= str(000102030405060708090a0b0c0d0e0f)       ^
SyntaxError: invalid token 
+0

Es sieht '000102030405060708090a0b0c0d0e0f' ist keine gültige Nummer. – taras

+0

@taras es ist mein Schlüssel, es ist richtig, ich muss es nur als String setzen: '000102030405060708090a0b0c0d0e0f', das ist mein Problem. – tierrytestu

+0

Nein, Sie können es als Hex verwenden, wenn Sie Python sagen, dass es ein Hex ist. wie folgt: ikk = 0x000102030405060708090a0b0c0d0e0f – BoboDarph

Antwort

1

Wenn IKK ist eine hexadezimale Zahl (und es sieht so aus), versuchen, auf diese Weise: ikk = 0x000102030405060708090a0b0c0d0e0f. Beachten Sie die 0x am Anfang, die Python sagen wird, dass dies eine Hexadezimalzahl und keine Dezimalzahl ist.

+0

Es gibt mir diesen Fehler: data = [re.findall ('..', Element) für Element in key.split ('\ n')] AttributeError: 'long' Objekt hat kein Attribut 'split' – tierrytestu

+1

Weil Sie versuchen, die Split-Funktion für ein Nicht-String-Objekt zu verwenden. – BoboDarph

+0

@tierrytestu Was versuchst du genau mit dieser Hex-Zahl zu machen? –

1

Satz ik:

ik= bytearray.fromhex("000102030405060708090a0b0c0d0e0f").decode() 

Dies wird hexadezimal in String konvertieren. Der vollständige Code ist unten geschrieben.

def test(): 
    ik = bytearray.fromhex("000102030405060708090a0b0c0d0e0f").decode() 
    data = [re.findall('..', item) for item in key.split('\n')] 
    for item in data: 
     if item: 
      result = [int(x, 16) for x in item] 
      print(result) 
      result = keyScheduleRounds(result, 0, 10) 
      tt=''.join(["%02x"%d for d in result]) 
      print(tt) 
+0

Es gibt mir diesen Fehler: UnicodeEncodeError: 'dezimal' Codec kann nicht codieren Zeichen u '\ x00' in Position 0: Ungültige Dezimal Unicode Zeichenfolge >>> – tierrytestu

Verwandte Themen