You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言:如何将long类型数字的各位拆分到数组中?

拆分Long类型数字的各位数字到数组的解决方案

问题分析

你之前用取模运算的方法忽略了0,大概率是因为提取每一位的逻辑有漏洞——比如没有正确处理某一位为0的情况,导致这些0没有被存入数组。下面给两种可靠的解决方法:


方法一:修正取模+除法的逐位提取法

这种方法通过循环提取最后一位数字,不会遗漏任何0,最后反转列表得到正确顺序:

long num = 4003607001000014L;
List<Integer> digitList = new ArrayList<>();

// 单独处理数字为0的情况
if (num == 0) {
    digitList.add(0);
} else {
    // 从后往前提取每一位
    while (num > 0) {
        // 取最后一位数字
        digitList.add((int) (num % 10));
        // 去掉最后一位
        num = num / 10;
    }
    // 反转列表得到从左到右的顺序
    Collections.reverse(digitList);
}

执行后digitList就是你要的[4, 0, 0, 3, 6, 0, 7, 0, 0, 1, 0, 0, 0, 0, 1, 4]。


方法二:字符串转换法(更简洁直观)

把Long数字转成字符串后遍历每个字符,直接转成整数存入数组,逻辑简单不易出错:

long num = 4003607001000014L;
String numStr = String.valueOf(num);
int[] digitArray = new int[numStr.length()];

for (int i = 0; i < numStr.length(); i++) {
    // 字符转整数:利用ASCII码差值
    digitArray[i] = numStr.charAt(i) - '0';
}

这种方法不需要处理反转,直接得到顺序正确的数组,完全不会遗漏0。


内容的提问来源于stack exchange,提问作者naber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:45:36