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

解決


hibino  2002-08-22 14:59:35  No: 50327  IP: [192.*.*.*]

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

編集 削除
hibino  2002-08-22 15:56:19  No: 50328  IP: [192.*.*.*]

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-22 16:39:53  No: 50329  IP: [192.*.*.*]

そんなことしなくても……。
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-22 19:28:45  No: 50330  IP: [192.*.*.*]

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

編集 削除