0x12345678を12345678に変換するには?

解決


hibino  2002-08-22 23:59:35  No: 50327

0x12345678 というDWORD値(16進数)を 12345678 という10進数のDWORD値に
変換するにはどうしたらよいですか?
VCというよりアルゴリズムの質問だと思いますが,宜しくお願いします。


hibino  2002-08-23 00:56:19  No: 50328

DWORD dw16_10To10_10(DWORD dw16_10)
{
    DWORD dw10_10 = 0;

    for (int i = 7; i > -1; --i)
    {
        dw10_10 += (DWORD) (pow(10, i) * (dw16_10 / (DWORD) pow(16, i)) );
        dw16_10 %= (DWORD) pow(16, i);
    }
    
    return dw10_10;
}


YuO  2002-08-23 01:39:53  No: 50329

そんなことしなくても……。
unsigned long hexint_to_decint (unsigned long hexint)
{
  char buffer[9]; /* とりあえず,unsigned longは32bitと仮定 */

  sprintf(buffer, "%x", hexint);
  return strtoul(buffer, 0, 10);
}
ただし,AとかBとかが出てこないこととします。
#ちなみに,hibinoさんのルーチンでも,powなしで書くことは十分可能です。


hibino  2002-08-23 04:28:45  No: 50330

YuOさんのルーチンは低コストですね。
私のルーチンは不勉強で恥ずかしいです。。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加