Как выполнить цикл по списку фиксированных повторяющихся шестнадцатеричных данных, объединяя их и сохраняя в текстовом файле
У меня есть текстовый файл с шестнадцатеричными числами, который предназначен для моих матричных данных.
Первая строка обозначает строки и столбцы моих матриц.
Это мои входные данные
00080008 #Rows=0x0008 n cols=0x0008 0024FFF2 #LSB1 004AFFB6 #MSB1 00200030 #LSB2 FFA7FFF0 #MSB2 00480051 002FFF9C FFF0004B 003BFFD0 FFA90016 FFD00034 FFA7FFB8 0017FFEE FFE0FFB2 00050050 0046FFBD 0057FFBF FFEFFFF8 0044FFFE 0007FFB9 0015FFCD FFCCFFCE FFA80028 0057FFB5 002CFFEB FFAAFFA6 FFFC0010 FFF2FFBC 0051005A FFB5FFC3 00630035 FFF70035 FFDB002E FFD2005D 00310059 FFA20003 FFF8FFD7 FFD0FFDA FFEB0059 FFFEFFE7 FFDA0013 FFD6FFFB 0004FFD4 004AFFA6 0020000E FFF1005B FFF4FFFB 00420050 FF9DFFD8 FFF5002E FFD80034 FFD70023 0034FFC5 003F0028 FFABFFBC FFD0001A 0061FFA4 0027004F 005D002B FFEB0027 FFD5FFFC FFFA002B FFEFFFD8 FFC4FFBF 004D005D FFA7005E FFA60046 0042FFEB FFB80002 FFE8FFFE FFE40039 002DFFAB 003CFFAD 3658F5F7 #skip 2B5A10B7 #skip FD23941D #skip 3A1A23CF #skip 9F161FC6 #skip BE5E2C70 #skip 4DD10283 #skip 378D4F41 #skip 00080008 #Next iteration FFA8002D 001B004F FFABFFEA 004DFFAF 001CFFF8 0008FFF5 0046002A 0016FFAA FFBCFFA2 0006FFA4 FFAA005B 0049FFF7 FFF8004C FFBC004C FFB30024 FFFA0028 FF9C002E FFE2FFB5 001FFFAF 002F0046 0062FFE4 0022FFF9 FFBC0044 0058003F 0063002A FFDD000E 00400006 005A001A 0007FFF7 003BFFEC 0018002D 0052FFD8 FFBE0034 FFB7FFA3 FFBA004B 0003002F 0036FFD0 00470015 FFA2002D 0018FF9C 003AFFA0 004A0017 FFB1005E 0007FFF6 00510012 FFC80053 FFCE001D 00180029 FFC0FFD1 FFA0FFD6 FFD2005C 00120050 FFEF003B FFDA0014 FFDBFFD4 FFA10058 FFBF0000 FFD0005E 00080009 00550036 FFCE0041 001D0034 00110062 FFF8001A 0051FFF7 FFAD0029 001E0034 FFA6FFCC FFE9FFE8 0051FFAE 00080047 FF9F0057 7102EC67 #skip 4AE2D357 #skip D765CA63 #skip 16EB9F62 #skip 278A2670 #skip 6929F93E #skip 195D0CE8 #skip A67D29E0 #skip
Мой код нуждается в следующем:
строки и coloumn строка должна быть заполнена "0"s, Чтобы сделать его 128 бит
строки, следующие за этой строкой (cols + (rows * cols)+ 1) = 8 + 64 + 1 = 72 линии должны быть объединены по 4 строки за раз.
Мне нужно объединить 4 строки отсюда и сделать шестнадцатеричное значение MSB2+LSB2+MSB1+LSB1
Я написал код для шаблона, который повторяется дважды, но из-за некоторых изменений в мастер-коде я получаю шаблон, повторяющийся более 2 раз..Как я могу изменить свой код, чтобы позаботиться о повторяющемся шаблоне?
Что я уже пробовал:
with open (filename, 'r') as f1: line_values=[line.strip() for line in f1] f1.close() width = line_values[0] width = int(width,16) rows = (width & 0xffff0000)>>16 cols = (width & 0x0000ffff) print rows print cols counter = cols + (rows * cols) + 1 print counter data_1 = line_values[:counter] data_2 = line_values[counter + cols:- cols] mem_file.write(line_values[0].zfill(32)+"\n") index = 1 for i in range(int(counter/4)): mem_file.write("".join(data_1[(index + 3):(index-1):-1])) mem_file.write("\n") index += 4 mem_file.write(line_values[counter + rows].zfill(32)+"\n") index = 1 for i in range(int(counter/4)): mem_file.write("".join(data_2[(index + 3):(index-1):-1])) mem_file.write("\n") index += 4
мой data_1 data_2 и
['00080008', '0024FFF2', '004AFFB6', '00200030', 'FFA7FFF0', '00480051', '002FFF9C', 'FFF0004B', '003BFFD0', 'FFA90016', 'FFD00034', 'FFA7FFB8', '0017FFEE', 'FFE0FFB2', '00050050', '0046FFBD', '0057FFBF', 'FFEFFFF8', '0044FFFE', '0007FFB9', '0015FFCD', 'FFCCFFCE', 'FFA80028', '0057FFB5', '002CFFEB', 'FFAAFFA6', 'FFFC0010', 'FFF2FFBC', '0051005A', 'FFB5FFC3', '00630035', 'FFF70035', 'FFDB002E', 'FFD2005D', '00310059', 'FFA20003', 'FFF8FFD7', 'FFD0FFDA', 'FFEB0059', 'FFFEFFE7', 'FFDA0013', 'FFD6FFFB', '0004FFD4', '004AFFA6', '0020000E', 'FFF1005B', 'FFF4FFFB', '00420050', 'FF9DFFD8', 'FFF5002E', 'FFD80034', 'FFD70023', '0034FFC5', '003F0028', 'FFABFFBC', 'FFD0001A', '0061FFA4', '0027004F', '005D002B', 'FFEB0027', 'FFD5FFFC', 'FFFA002B', 'FFEFFFD8', 'FFC4FFBF', '004D005D', 'FFA7005E', 'FFA60046', '0042FFEB', 'FFB80002', 'FFE8FFFE', 'FFE40039', '002DFFAB', '003CFFAD'] ['00080008', 'FFA8002D', '001B004F', 'FFABFFEA', '004DFFAF', '001CFFF8', '0008FFF5', '0046002A', '0016FFAA', 'FFBCFFA2', '0006FFA4', 'FFAA005B', '0049FFF7', 'FFF8004C', 'FFBC004C', 'FFB30024', 'FFFA0028', 'FF9C002E', 'FFE2FFB5', '001FFFAF', '002F0046', '0062FFE4', '0022FFF9', 'FFBC0044', '0058003F', '0063002A', 'FFDD000E', '00400006', '005A001A', '0007FFF7', '003BFFEC', '0018002D', '0052FFD8', 'FFBE0034', 'FFB7FFA3', 'FFBA004B', '0003002F', '0036FFD0', '00470015', 'FFA2002D', '0018FF9C', '003AFFA0', '004A0017', 'FFB1005E', '0007FFF6', '00510012', 'FFC80053', 'FFCE001D', '00180029', 'FFC0FFD1', 'FFA0FFD6', 'FFD2005C', '00120050', 'FFEF003B', 'FFDA0014', 'FFDBFFD4', 'FFA10058', 'FFBF0000', 'FFD0005E', '00080009', '00550036', 'FFCE0041', '001D0034', '00110062', 'FFF8001A', '0051FFF7', 'FFAD0029', '001E0034', 'FFA6FFCC', 'FFE9FFE8', '0051FFAE', '00080047', 'FF9F0057']
Данные моего txt файла:
00000000000000000000000000080008 FFA7FFF000200030004AFFB60024FFF2 003BFFD0FFF0004B002FFF9C00480051 0017FFEEFFA7FFB8FFD00034FFA90016 0057FFBF0046FFBD00050050FFE0FFB2 0015FFCD0007FFB90044FFFEFFEFFFF8 002CFFEB0057FFB5FFA80028FFCCFFCE 0051005AFFF2FFBCFFFC0010FFAAFFA6 FFDB002EFFF7003500630035FFB5FFC3 FFF8FFD7FFA2000300310059FFD2005D FFDA0013FFFEFFE7FFEB0059FFD0FFDA 0020000E004AFFA60004FFD4FFD6FFFB FF9DFFD800420050FFF4FFFBFFF1005B 0034FFC5FFD70023FFD80034FFF5002E 0061FFA4FFD0001AFFABFFBC003F0028 FFD5FFFCFFEB0027005D002B0027004F 004D005DFFC4FFBFFFEFFFD8FFFA002B FFB800020042FFEBFFA60046FFA7005E 003CFFAD002DFFABFFE40039FFE8FFFE 00000000000000000000000000080008 004DFFAFFFABFFEA001B004FFFA8002D 0016FFAA0046002A0008FFF5001CFFF8 0049FFF7FFAA005B0006FFA4FFBCFFA2 FFFA0028FFB30024FFBC004CFFF8004C 002F0046001FFFAFFFE2FFB5FF9C002E 0058003FFFBC00440022FFF90062FFE4 005A001A00400006FFDD000E0063002A 0052FFD80018002D003BFFEC0007FFF7 0003002FFFBA004BFFB7FFA3FFBE0034 0018FF9CFFA2002D004700150036FFD0 0007FFF6FFB1005E004A0017003AFFA0 00180029FFCE001DFFC8005300510012 00120050FFD2005CFFA0FFD6FFC0FFD1 FFA10058FFDBFFD4FFDA0014FFEF003B 0055003600080009FFD0005EFFBF0000 FFF8001A00110062001D0034FFCE0041 FFA6FFCC001E0034FFAD00290051FFF7 FF9F0057000800470051FFAEFFE9FFE8
Этот код отлично работает для любого шаблона, повторяющегося дважды. Поскольку я разделяю данные на 2 списка, а затем использую эти списки элементов для объединения и записи в мой txt-файл. Как изменить код, если шаблон повторяется n раз?
Gerry Schmitz
Это "звучит" так, как будто это должно быть легко, но я не думаю, что кто-то понимает, чего вы хотите, или что вы делаете, или в чем смысл.
Member 11362771
Да...нашел выход.