0x12345678 というDWORD値(16進数)を 12345678 という10進数のDWORD値に
変換するにはどうしたらよいですか?
VCというよりアルゴリズムの質問だと思いますが,宜しくお願いします。
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;
}
そんなことしなくても……。
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なしで書くことは十分可能です。
YuOさんのルーチンは低コストですね。
私のルーチンは不勉強で恥ずかしいです。。