数値をループして、その整数の文字配列表現を作成するコードがあります。したがって、1234のような数値の場合、{'1'、 '2'、 '3'、'4'}のような配列が得られます。
コードの一部を以下に示します。
do {
//print here
c[i++] = (char)(((int)'0')+(num - (num/10)*10 ));
} while ((num = num/10) != 0);
long long int:18446612134627563776のような大きなデータ型に関しては問題があります
ループ内の値を出力しました:
18446612134627563776
18446730879801352832
18446742754318731738
...
18446744073709551615
値は次のようになります
18446612134627563776
1844661213462756377
184466121346275637
...
18
1
奇妙なことに、ループが終了します。最後に出力された値はです18446744073709551615 != 0
ので、なぜそこで終了したのかわかりません。私が正しくやっていないデータ型の問題だと思います。
これはprintステートメントです:
printk("long=%llu sec=%llu , char=%c\n", num, (num/10)*10, (char)(((int)'0')+((num - (num/10)*10 ))));