UInt32 値を XML ファイルから文字列として読み取ります。そして、それを UInt32 に変換したいと思います。
UInt32 res = Convert.ToUInt32("0x00B73004", 16);
しかし、変換後の値は次のようになります。12005380
なぜそうなのですか?
UInt32 値を XML ファイルから文字列として読み取ります。そして、それを UInt32 に変換したいと思います。
UInt32 res = Convert.ToUInt32("0x00B73004", 16);
しかし、変換後の値は次のようになります。12005380
なぜそうなのですか?
意図したとおりに機能しています。0xB73004
(任意の数の先行ゼロを含む) は、10 進表記で 12005380 です。
>>> hex(12005380)
'0xb73004'
他の回答が示唆するように、16 進数の B73004 は 10 進数の 12005380 と同じです。
あなたが忘れているかもしれないことは、UInt32 はフォーマットを保持できないということです。UInt32 は、数値を表す 32 ビットの組み合わせです。価値。その番号がどのように表示されるかは、完全にあなた次第です。16 進数、2 進数、または 10 進数として表示できます。例:
Console.WriteLine("{0} = {0:X}", res);
ウォッチ ウィンドウを右クリックし、[16 進数表示] を選択して、値を 16 進数形式で表示するように Visual Studio に指示することもできます。
この動作は浮動小数点数と同じです。ドットまたはコンマでフォーマットする必要がある場合、情報は含まれません。それは(現在の)文化に依存します。また、DateTime の場合: フォーマットなしで日付と時刻が含まれます。プログラマーは、その日付と時刻の表示方法を定義できます (たとえば、dd-MM-yyyy
やyyyy-MM-dd
など)。
0x00B73004
の16進数表記です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
ちなみにBhex=11dec
この 16 進数表記は、次のような数値で保存できます。
uint i = 0x00B73004;
それは何も悪いことではありません。デバッガーで10進法の値を確認できます。