如果我有一个数字(长(,我如何将其数字拆分为数组?
示例:4003607001000014
->CCD_ 2。
我尝试使用模(n % (10 * i)
(,其中i
从1
开始,其值在for循环的每次迭代中增加10
的倍数。然后将结果添加到从n到0的数组中,但这样,任何零都会被忽略。
尝试每次迭代将数字除以10,这比通过增加10的幂进行模运算更简单:
unsigned char digits[BIG_ENOUGH];
unsigned long number;
unsigned i = 0;
while (number) {
digits[i++] = number%10;
number /= 10;
}
如果您需要digits[0]
来存储最高有效位而不是最低有效位,请稍后反转数组:
for (unsigned low = 0, high = digits-1; low < high; low++, high--) {
unsigned char tmp = digits[low];
digits[low] = digits[high];
digits[high] = tmp;
}