|
> tmp = x;
> a = 1;
> b = 6;
> while (x / a > 1) {
> a *= 10;
> tmp += x / a * b;
> b *= 0x10;
> }
理解するのに数分かかってしまいました。
私なら、次のように書きますが、ビット演算に慣れていない人には分かりにくいかも。
a = x;
for (tmp = b = 0; a != 0; b += 4) {
tmp += a % 10 << b;
a /= 10;
}
ライブラリを使うとしたら、
char buf[24];
sprintf(buf, "%lu", x);
tmp = strtoul(buf, NULL, 16);
|