0

これは本当に私を混乱させます。プログラムでは、2 つのデータベース間の状態を追跡するために、なんらかの理由でカウンターが格納されています。これは本質的に増分カウンターのみです。

コードは次のカウンターを格納します。

byte[] counter;

データベースに保存されると、次のような文字列にレンダリングされます...

0x00010471000001BF001F

2 つの数字を入力することで、一方が他方よりも高いかどうか、およびいくつ高いかを教えてくれるアプリを書きたいと思います。しかし、これらの数値を整数表現に変換する方法がわかりません。

何が起こっているのか、これが可能かどうかは誰にも分かりませんか?

4

2 に答える 2

4

数値は 20 の 16 進数 (80 ビット) であるため、int (32 ビット) または long (64 ビット) に格納するには大きすぎます。BigInteger.NET 4.0 以降で使用できます。(.NET 4.0 では、System.Numerics.dll への参照を追加する必要があります)

var bigint = new System.Numerics.BigInteger(counter)

Øyvind が指摘したように、上記ではリトルエンディアン順のバイト配列が必要です。つまり、 new byte [] { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } は 1 に評価されます。必要に応じて、Array.Reverse を使用してこれを回避してください。

数字を文字列として持っているので、を使用する必要BigInteger.Parseがありますが、最初から「0x」を削除する必要があることに注意してください

var bigint = System.Numerics.BigInteger.Parse("00010471000001BF001F",
                 System.Globalization.NumberStyles.HexNumber,
                 System.Globalization.CultureInfo.InvariantCulture);
于 2012-11-22T10:14:03.107 に答える
0

このソリューションに基づいて使用できます

int intNumber = int.Parse(counter,system.Globalization.NumberStyles.HexNumber);

于 2012-11-22T10:29:12.367 に答える