常に 236 バイトになるブロックの量があります。そして、ブロックに収まる必要があるエントリがいくつかあります。これらはブロックに完全に収まらない場合があるため、ブロックにはいくつかの null バイトが残ります。
エントリを書き込む場所と、これをどのブロックに配置するかを考えています。
int blocklen = 236;//always the same
int entryindex = 14;//example index of an entry to write
int entrylength = 16;//this will be the same in all entries in these blocks.
int blockindex = ((entryindex + 1) * entrylength) / blocklen;//this works and will correctly calculate the index of the block to write to.
int offset = ((entryindex) * entrylength) % blocklen;// this is incorrect, I need it to work out the offset with in the block.
私の entryindex が 13 の場合、ブロック 0 の @ 208 として機能し、その通りです。ただし、14 の場合は最初のブロックに収まらないため、ブロック 1 @ 0 にする必要がありますが、代わりにオフセット 224 でブロック 1 と表示され、224 は最初のブロックのオフセットですが、次のブロックに引き継ぐ必要があります。ブロック。
とにかく数学が苦手で、私の日ではないので、そのコード行で誰かが私を助けてくれるかどうか疑問に思っていました.