-1

http://www.leemon.com/crypto/BigInt.js

私はleemon bigint.jsライブラリを使用しています

http://smart2.qred.fi/js/jknc.jsに相当する c# クラスを作成します。

この行に何を書くべきか混乱しています

  var bigInteger = new BigInt(convert);

私のC#クラスを適切にすることができます。

このhttp://www.jknc.eu/RFcalculatorの c# クラスを作成します。これは、c# http://smart2.qred.fi/js/jknc.jsで記述する必要がある JS ファイルです。クラスですが、作成者サイトで確認した書き込み結果を取得できません。

私はこの関数を書きます

 public string jknc_calculate_creditor_reference(string text)
    {
        //var bigInteger=new BigInt( convert_text_to_digits(text+'RF00') );     
        BigInteger biginteger = new BigInteger(Convert.ToInt16(convert_text_to_digits(text + "RF00")));
        //$('integer_calculate').innerhtml=biginteger.tostring();
        //var mod = bigint_mod(biginteger, new bigint(97));
        //var y = bigint_number(mod);

        //BigInteger big = new BigInteger(1222222);
        BigInteger mod;
        BigInteger.DivRem(biginteger, new BigInteger(97), out mod);


        var x = 98 - mod;
        var result = "";

        //$('x').innerhtml=x;
        //$('y').innerhtml=y;

        if (x < 10)
        {
            result = "0" + x;
        }
        else
        {
            result = Convert.ToString(x);
        }
        //$('result').innerhtml=result;
        var newstr = text.Replace(" ", ""); //remove white space
        string complete_result = "rf " + result + " " + format_string(newstr);
        return complete_result;
        //$('complete_result').innerhtml='rf '+result+ " "+format_string(newstr);
    }

JSファイルの

function jknc_calculate_creditor_reference(text) {
    var bigInteger = new BigInt(convert_text_to_digits(text + 'RF00'));
    //$('integer_calculate').innerHTML=bigInteger.toString();
    var mod = bigint_mod(bigInteger, new BigInt(97));
    var y = bigint_number(mod);

    var x = 98 - y;
    var result = "";

    //$('x').innerHTML=x;
    //$('y').innerHTML=y;

    if (x < 10) {
        result = '0' + x;
    } else {
        result = x;
    }
    $('result').innerHTML = result;
    var newStr = text.replace(/\s/g, '');

    $('complete_result').innerHTML = 'RF ' + result + " " + format_string(newStr);
}

そしてそれはこのスクリプトの参照を持っています

http://www.onicos.com/staff/iz/amuse/javascript/expert/BigInt.txt

しかし、BigInt js ライブラリを修正できないため、関数で正しい結果が得られません。

4

1 に答える 1

2

BigInt クラスに関しては、既製のライブラリがあります。一致しない算術 API を変更する必要があります。

.NET 4.0 System.Numerics.BigInteger にアクセスできるように、System.Numerics.dllassembly への参照を追加します。

.NET 2.0 IntX は、任意精度の整数ライブラリです http://intx.codeplex.com/

于 2012-11-05T11:55:55.827 に答える