16進数から10進数の変換
Posted feedbacks - C
C99にはlong long型があるから簡単じゃん、と思ったら処理系の違いで苦労した。
strtoull で変換し、printf の %ull で出力するのが標準かと。
VC2008EE と gcc(MinGW) で確認しました。
strtoull で変換し、printf の %ull で出力するのが標準かと。
VC2008EE と gcc(MinGW) で確認しました。
see: HeadWing | 64bit Integer in MinGWC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <stdio.h>
#include <stdlib.h>
#ifdef _MSC_VER
#define strtoull _strtoui64
#endif
#ifdef __MINGW32__
#define FORMAT_LLU "%I64u"
#else
#define FORMAT_LLU "%llu"
#endif
int main(void) {
char buf[128];
memset(buf, 0x00, sizeof(buf));
if ( fgets(buf, sizeof(buf), stdin) ) {
unsigned long long ll;
ll = strtoull(buf, NULL, 16);
printf(FORMAT_LLU, ll);
}
return 0;
}
|

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