16進数から10進数の変換
Posted feedbacks - D
言語組み込みで扱える最大整数は64bitのlongです。なぜか標準ライブラリに16進文字列から整数に変換する関数がないのでC99からstrtollを借ります。
標準ライブラリに多倍長整数はあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 | import core.stdc.stdlib: strtoll;
import std.bigint: BigInt;
import std.stdio;
void main() {
// longは64bit
long x = strtoll("0x12437308CCB6", null, 16);
writeln(x); // 20080902065334
// BigIntは多倍長整数
BigInt y = "0x2C9C1227FC6520B";
writeln(y); // 200904012311450123
}
|
苦肉の策です(笑)
全く、リテラルは2進数までサポートしているくせに…
1 2 3 4 5 6 | import std.stdio;
void main() {
long x = mixin("0x12437308CCB6");
writeln(x); // 20080902065334
}
|




shojiHIDAKA #8955() Rating1/1=1.00
16進数を10進数に変換してください。
ただし、入出力は文字列とし、次の変換は最低必ずできなければいけないこととします。
2.0x2C9C1227FC6520B →200904012311450123
あわせて、扱える最大の整数も明らかにしてください。
[ reply ]