Bonjour,
je veux écrire une fonction qui prend comme entrée un tableau de cell 1x4
et comme sortie un tableau de même type et dimension mais qui range les éléments de l'entrée d'une façon qu'il inverse les octets de poids forts et celles de poids faibles de cette façon
exemple:
entrée: pt={'6103776F','75001A69','0015E56F','016D2269'}
sortie: pf={'6F770361','691A0075','6FE51500','69226D01'}
j'ai écris ce code:
il me donne un bon résultat mais quand je l'ai écris sous forme d'une fonction pf=range(pt)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 pt={'6103776F','75001A69','0015E56F','016D2269'}; elt2=[]; ee=[]; for k=1:4 for i=1:2:8 ee{k, fix(i/2 + 0.5)} = pt{k}(i:i+1); end end for i=1:4 for j=1:4 val = ee(i,j); elt2 =[elt2 val]; end end PP=[0 0 0 0 0]; for i=16:-1:1 PP(ceil(i/4))= mod(ROTL(PP(ceil(i/4)),8) + hex2dec(elt2(i)),2^32); dec2hex(PP(ceil(i/4))); end pf={dec2hex(PP(1),8) dec2hex(PP(2),8) dec2hex(PP(3),8) dec2hex(PP(4),8)};
j'ai eu l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 function pf=range(pt) pt=cell(1,4); elt2=[]; elt2=[]; ee=[]; for k=1:4 for i=1:2:8 ee{k, fix(i/2 + 0.5)} = pt{k}(i:i+1); end end for i=1:4 for j=1:4 val = ee(i,j); elt2 =[elt2 val]; end end PP=[0 0 0 0 0]; for i=16:-1:1 PP(ceil(i/4))= mod(ROTL(PP(ceil(i/4)),8) + hex2dec(elt2(i)),2^32); dec2hex(PP(ceil(i/4))); end pf={dec2hex(PP(1),8) dec2hex(PP(2),8) dec2hex(PP(3),8) dec2hex(PP(4),8)}; end
pouvez vous m'aider à la résoudre svp ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ??? Index exceeds matrix dimensions. Error in ==> range at 9 ee{k, fix(i/2 + 0.5)} = pt{k}(i:i+1);
Partager