首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >int到char数组

问int到char数组
EN

Stack Overflow用户
提问于 2016-07-28 09:11:00
回答 7查看 22.4K关注 0票数 3
代码语言:javascript
复制
static void Main(string[] args)
{
    int num = 382;
    int output = 0;
    char[] nlst = num.ToString().ToCharArray();
    for (int i = 0; i < nlst.Length; i++)
    {
        output += nlst[i];
    }
    Console.WriteLine(output);
    Console.ReadLine();
}

输出结果是157,实际上应该是13。通过调试,我发现了char[] nlst的以下三个元素:

51'3',156'8',250'2‘

为什么?51,56,50是什么意思?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2016-07-28 09:14:51

假设'0'的char值为0。它不是,它实际上是UTF16值的'0'是48。

因此,您要将字符UTF16值'3'、'8'和'2',即51、56和50相加。

请注意,如果您的目标是将整数的所有数字加在一起,最好的方法是避免完全转换为字符串,如下所示:

代码语言:javascript
复制
int num = 382;

// Compute the sum of digits of num

int total = 0;

while (num > 0)
{
    total += num%10;
    num /= 10;
}

Console.WriteLine(total);

然而,如果您只想知道如何使您的版本工作,只需减去'0'从每个字符之前,添加代码在一起。这将将'0'转换为0,将'1'转换为1,等等:

代码语言:javascript
复制
for (int i = 0; i < nlst.Length; i++)
{
    output += nlst[i] - '0'; // Subtract '0' here.
}
票数 12
EN

Stack Overflow用户

发布于 2016-07-28 09:14:55

它们分别是'3‘、'8’和'2‘的Unicode值。

转换Unicode值(例如。51)表示由Unicode值表示的字符的整数表示(例如。3)使用Convert.ToInt32(char)方法。

票数 2
EN

Stack Overflow用户

发布于 2016-07-28 09:15:18

编辑的Char是unicode 16 (https://msdn.microsoft.com/en-us/library/x9h8tsay.aspx)。您可以使用int.Parse

代码语言:javascript
复制
static void Main(string[] args)
{
    int num = 382;
    int output = 0;
    char[] nlst = num.ToString().ToCharArray();
    for (int i = 0; i < nlst.Length; i++)
    {
        output += int.Parse(nlst[i].ToString());

    }
    Console.WriteLine(output);
    Console.ReadLine();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38631909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档