1

UInt32 値を XML ファイルから文字列として読み取ります。そして、それを UInt32 に変換したいと思います。

UInt32 res = Convert.ToUInt32("0x00B73004", 16);

しかし、変換後の値は次のようになります。12005380

なぜそうなのですか?

4

3 に答える 3

4

意図したとおりに機能しています。0xB73004(任意の数の先行ゼロを含む) は、10 進表記で 12005380 です。

>>> hex(12005380)
'0xb73004'
于 2014-10-24T13:37:12.373 に答える
3

他の回答が示唆するように、16 進数の B73004 は 10 進数の 12005380 と同じです。

あなたが忘れているかもしれないことは、UInt32 はフォーマットを保持できないということです。UInt32 は、数値を表す 32 ビットの組み合わせです。価値。その番号がどのように表示されるかは、完全にあなた次第です。16 進数、2 進数、または 10 進数として表示できます。例:

Console.WriteLine("{0} = {0:X}", res);

ウォッチ ウィンドウを右クリックし、[16 進数表示] を選択して、値を 16 進数形式で表示するように Visual Studio に指示することもできます。

この動作は浮動小数点数と同じです。ドットまたはコンマでフォーマットする必要がある場合、情報は含まれません。それは(現在の)文化に依存します。また、DateTime の場合: フォーマットなしで日付と時刻が含まれます。プログラマーは、その日付と時刻の表示方法を定義できます (たとえば、dd-MM-yyyyyyyy-MM-ddなど)。

于 2014-10-24T13:45:59.123 に答える
1

0x00B7300416進数表記です12005380。プレフィックス"0x"は、16 進定数を表す最も一般的な表記法です。

なぜここに数学的な側面があるのか​​ を尋ねるので。

00B73004 16 = 0 * 16 7 + 0 * 16 6 + B * 16 5 + 7 * 16 4 + 3 * 16 3 + 0 * 16 2 + 0 * 16 1 + 4 * 16 0

= 0 + 0 + 11 * 16 5 + 7 * 16 4 + 3 * 16 3 + 0 * 16 2 + 0 * 16 1 + 4 * 16 0

= 0 + 0 + 11534336 + 458752 + 12288 + 0 + 0 + 4

= 12005380

ちなみにBhex11dec

この 16 進数表記は、次のような数値で保存できます。

uint i = 0x00B73004;

それは何も悪いことではありません。デバッガーで10進法の値を確認できます。

ここに画像の説明を入力

于 2014-10-24T14:02:14.017 に答える