#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. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.