任意のバイト数と1バイトの間でモジュロ演算を行うCで実装されたアルゴリズムを作成する必要があります。 2のべき乗の場合バイト配列と8ビット整数を持つモジュロアルゴリズム:8bit = bytes%8bit
typedef struct{
u_int8_t * data;
u_int16_t length;
}UBigInt;
u_int8_t UBigIntModuloWithUInt8(UBigInt a,u_int8_t b){
}
&(B-1)を使用することができますが、どのような2のべき乗以外について:これを参照してください?
私は1つの方法は実現: - UBigIntDivisionWithUInt8とUBigIntMultiplicationWithUInt8とUBigIntSubtractionWithUBigIntを使用するために必要となるのb *(A/B)
。これを行うより効率的な方法がありますか?
ありがとうございます。
u_int8_t UBigIntModuloWithUInt8(UBigInt a,u_int8_t b){
if (!(b & (b - 1)))
return a.data[a.length - 1] & b - 1; // For powers of two this can be done
// Wasn't a power of two.
u_int16_t result = 0; // Prevents overflow in calculations
for(int x = 0; x < a.length; x++) {
result *= (256 % b);
result %= b;
result += a.data[x] % b;
result %= b;
}
return result;
}
「a」は任意のバイト数です。 bについて何か言いたいことがあればどうしますか?それは一定ですか?もしそうなら、どんな価値がありますか? – violet313
私は 'b'は任意の8ビット(符号なし?)の整数だと思います。 –
bは1-255であってもよい。私は58のためにそれを実装する必要がありますが、より多くの場合があります。 58のために特別に最適化されたソリューションがある場合、それは良いでしょうが、私はそれを実装する必要があります。 –