Python : преобразование шестнадцатеричных значений из файла txt в двоичный список

#python-3.x #list

#python-3.x #Список

Вопрос:

первое значение, полученное для CANMESSAGE_BIN[0], по какой-то причине соответствует последнему значению моего txt-файла

цель моего кода-проверить наличие шестнадцатеричного значения и преобразовать его в двоичный

например, я определяю все шестнадцатеричные значения, соответствующие идентификатору : 0CF002E6

 ID = input(" Enter ID that you are looking to display along wit its CAN messages : ") ### ex : 0CF002E6  print("this is gonna generate two files : first file will contain the CAN messages in HEX and the second in binary")  with open (path) as f: # Open file.txt for reading text data.  lines = f.readlines()  for myline in lines:   if ID in myline: # For each line, stored as myIDs,  EXTRACT.append(myline) # we create a list only with that ID    INDEX = [z[2:6] for z in EXTRACT] # we recuperate the index of the CAN message  CANMESSAGE_HEX = [z[41:64] for z in EXTRACT] # we recuperate the CAN messag itself  #res = "n".join("{} {}".format(x, y) for x, y in zip(INDEX, CANMESSAGE_HEX)) # use a print in case you wanna display the output on a terminal  #print(res)  #print("le dernier element est : ",CANMESSAGE_HEX[1933])    end_length_hex = len(CANMESSAGE_HEX[0])  end_length_total = len(CANMESSAGE_HEX) # We declare the size of each lines fo the binary format   print("le premierrr element est",CANMESSAGE_HEX[0])  print("le dernierrrr element est",CANMESSAGE_HEX[-1])  print("la longueur est : ",end_length_hex )  print("la longueur totale est : ",end_length_total)    for i in range(0,end_length_total):  binary_value.clear()  for j in range(0,end_length_hex,3): # we check each line  int_value = int(CANMESSAGE_HEX[i][j] CANMESSAGE_HEX[i][j 1], base=16)   binary_value.append(str(bin(int_value))[2:].zfill(8)) # we convert then to binary value  CANMESSAGE_BIN.append(binary_value)     print("first item is", CANMESSAGE_BIN[0])  print("last item is", CANMESSAGE_BIN[-1])     print(*CANMESSAGE_BIN, sep = "n")    

введите описание изображения здесь

ID = ввод(» Введите идентификатор, который вы хотите отобразить вместе с его сообщениями CAN : «) ### пример : 0CF002E6 печать(«это создаст два файла : первый файл будет содержать сообщения CAN в шестнадцатеричном формате, а второй в двоичном») с открытым (путь) как f: # Открыть file.txt для чтения текстовых данных. строки = f.readlines() для моей строки в строках: если идентификатор в моей строке: # Для каждой строки, сохраненной как мои идентификаторы, ИЗВЛЕКИТЕ.добавьте(моя строка) # мы создаем список только с этим идентификатором

 INDEX = [z[2:6] for z in EXTRACT] # we recuperate the index of the CAN message  CANMESSAGE_HEX = [z[41:64] for z in EXTRACT] # we recuperate the CAN messag itself  #res = "n".join("{} {}".format(x, y) for x, y in zip(INDEX, CANMESSAGE_HEX)) # use a print in case you wanna display the output on a terminal  #print(res)  #print("le dernier element est : ",CANMESSAGE_HEX[1933])    end_length_hex = len(CANMESSAGE_HEX[0])  end_length_total = len(CANMESSAGE_HEX) # We declare the size of each lines fo the binary format   print("le premierrr element est",CANMESSAGE_HEX[0])  print("le dernierrrr element est",CANMESSAGE_HEX[-1])  print("la longueur est : ",end_length_hex )  print("la longueur totale est : ",end_length_total)    for i in range(0,end_length_total):  binary_value.clear()  for j in range(0,end_length_hex,3): # we check each line  int_value = int(CANMESSAGE_HEX[i][j] CANMESSAGE_HEX[i][j 1], base=16)   binary_value.append(str(bin(int_value))[2:].zfill(8)) # we convert then to binary value  CANMESSAGE_BIN.append(binary_value)     print("first item is", CANMESSAGE_BIN[0])  print("last item is", CANMESSAGE_BIN[-1])  

Комментарии:

1. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.