在C语言中如何将int转换为指定十进制拆分的char[4]数组
嘿,这个需求我懂了——就是要把整数按特定的分段规则拆进char数组里,对吧?我来给你一步步讲怎么实现:
核心拆分逻辑
先看你的例子:p=2999999要拆成[2, 99, 99, 99],本质是把数字按「1位 + 3组两位」的方式拆分:
- 第1位:取最高位的单个数字(2)
- 剩下的6位,每两位一组,依次存入数组的后三个位置(99、99、99)
具体代码实现
利用C语言整数除法和取模的特性,就能轻松完成这个拆分:
#include <stdio.h> int main() { int p = 2999999; char k[4]; // 按规则拆分整数到char数组 k[0] = p / 1000000; // 取最高位:2999999 ÷ 10^6 = 2 k[1] = (p / 10000) % 100; // 取第2-3位:先除以10^4保留前3位,再取模100得到后两位 k[2] = (p / 100) % 100; // 取第4-5位:除以10^2保留前5位,取模100得到最后两位 k[3] = p % 100; // 取最后两位:直接取模100 // 验证结果是否符合要求 printf("k[0] = %d\n", k[0]); printf("k[1] = %d\n", k[1]); printf("k[2] = %d\n", k[2]); printf("k[3] = %d\n", k[3]); return 0; }
代码说明
- 整数除法会自动舍去低位,比如
2999999 / 10000得到299,刚好保留了前三位数字; - 取模
100可以快速提取最后两位数字,比如299 % 100得到99; - 虽然用的是
char数组,但99在有符号char的取值范围(-128~127)内,完全不用担心溢出问题。
运行这段代码后,输出的结果会和你要求的k数组完全一致。
内容的提问来源于stack exchange,提问作者Vis
相关产品推荐
相关产品推荐

