C言語学び中です。
配列において
16進数のhairetu[0000000000000000f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff]があって途中処理する場合
最後だけ1ビットカウントアップ及びダウンカウントするやり方はどうすればいいのでしょうか?
feはffへ、ffは00,01,02,03・・・と増えていきます。
それともカウンターはタイマーとかを使用しているのでしょうか?
##試したこと
#include<stdio.h> #include"a.h" int main(){ unsigned char hairetu[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7, 0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff}; unsigned char hoge1[32]={0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6, 0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c, {0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6, 0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c} unsigned char hoge[32]={0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, unsigned char hairetu2[32]={0}; abc(hairetu,hoge1,hairetu2); hairetu[31]=0; hairetu[32]=0; for(i=0;i<32;i++){ hairetu2[i]^=hoge[i]; } hairetu[32]=1; abc(hairetu,hoge1,hairetu2+16); for(i=0;i<32;i++){ hairetu2[i+16]^=hoge[i+16]; } hairetu[32]=2; abc(hairetu,hoge1,hairetu2+32); for(i=0;i<32;i++){ hairetu2[i+32]^=hoge[i+32]; } hairetu[32]=3; abc(hairetu,hoge1,hairetu2+48); for(i=0;i<32;i++){ hairetu2[i+48]^=hoge[i+48]; }
count++;
や
hairetu[i]++;
というようにしても全部変わってしまうので
fffff-(0001+ffff)+0001のように足し算ではなく引き算するとできるかもと言われましたができません。
##試したこと
#include <stdlib.h> #include"a.h" int i,j,count=0; FILE* fp1; unsigned char counter[32]= {0}; int main(){ fp1 = fopen("counter.bin","rb" ); if( fp1 == NULL ){ printf( "ファイルオープンに失敗しました。同じフォルダにありません\n" ); exit( 1 ); } fread( counter, sizeof(char), sizeof(counter), fp1 ); fclose(fp1); for(count=0;count<100;count++){ for (i = 0; i < 32; i++){ if(counter[i+31]<0xff){ counter[i+31]+=0x01; } else if(ctr[i+31]==0xff){ counter[i+30]+=0x01; counter[i+31]=0x00; if(count>0){ if(counter[i+30]=0xff,ctr[i+31]=0xff){ counter[i+29]+=0x01; counter[i+30]+=0x00; counter[i+31]+=0x00; } } }
意見をもとに配列の部分をカウントアップをなんとか処理できましたcounter[0]まで左にずらしつついれていくのは大変でまとめる方法やもとに戻る方法はわかりませんでしたが最低限実行することはできました。
##動作環境
C VisualStudioCode LINUX
VisualStudio2019,VisualStudioCode windows10
回答2件
あなたの回答
tips
プレビュー