从整数中获取每个单独的数字

35

假设我有一个名为“score”的整数,看起来像这样:

int score = 1529587;

现在我想要做的是从分数中获取每个数字 1、5、2、9、5、8、7,使用位运算符(见下面编辑说明)。

我相信这可以做到,因为我曾经用过类似的方法从十六进制颜色值中提取红、绿、蓝值。

我应该如何做呢?

编辑
不一定要使用位运算符,我只是认为这样更简单。


1
由于我在个人位运算符手册(http://graphics.stanford.edu/~seander/bithacks.html)中没有找到相关内容,所以我认为这可能需要更深入的阐述才能实现。 - phimuemue
如果它们是十进制数,你不能使用位运算来获取它们。如果它们是十六进制,则可能。请指明。 - Andrey
11个回答

-1
我已经想出了这个解决方案,它很简单,不是读取一个整数,而是读取一个字符串(在C中是char数组),然后使用for循环编写,代码还会计算数字的总和。
// #include<string.h>

scanf("%s", n);
int total = 0;

for (int i = 0; i< strlen(n); i++){
    printf("%c", n[i]);
    total += (int)(n[i]) -48;
}

printf("%d", total);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接