C# 将转换后的值存储在变量中
我正在尝试存储提取的字符串的值。我无法使其工作C# 将转换后的值存储在变量中,c#,C#,我正在尝试存储提取的字符串的值。我无法使其工作 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string a = "123";
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string a = "123";
int c = a[a.Length - 1];
Console.WriteLine(c);
}
}
}
3不应该存储在变量c中吗?我只想存储3个;我不知道这有什么问题,输出是'51'怎么可能 您正在将字符3的ascii码隐式转换为整数。
此代码值为51 如果要获取整数值,需要解析该字符
string a = "123";
char c = a[a.Length - 1];
string c2 = string.Concat(c,c);
int v = Int32.Parse(c.ToString());
int v2 = v + v;
Console.WriteLine("This is a char:" + c); // 3
Console.WriteLine("This is a string:" + c2); // 33
Console.WriteLine("This is an integer: " + v); // 3
Console.WriteLine("This is an integer: " + v2); // 6
您正在将字符3的ascii码隐式转换为整数。
此代码值为51 如果要获取整数值,需要解析该字符
string a = "123";
char c = a[a.Length - 1];
string c2 = string.Concat(c,c);
int v = Int32.Parse(c.ToString());
int v2 = v + v;
Console.WriteLine("This is a char:" + c); // 3
Console.WriteLine("This is a string:" + c2); // 33
Console.WriteLine("This is an integer: " + v); // 3
Console.WriteLine("This is an integer: " + v2); // 6
3不应该存储在变量c中吗
否,'3'
的整数表示应该存储在变量c
中,实际上是
你实际上在做:
char tmp = a[a.Length - 1]; // tmp = '3'
int c = tmp; // Implicit conversion to int
NET中的“字符”表示实际上是一个UTF-16代码单元。。。从char
转换为int
只需复制该代码单元
'3'
的代码单位是51,因此您的输出是51
如果您只使用char
,您会很好:
string a = "123";
char c = a[a.Length - 1];
Console.WriteLine(c); // "3"
如果要获取字符的“数值”,可以使用:
请注意,您必须强制转换为int
,因为返回类型是double
,以便处理表示分数、无穷大等的字符
如果您完全确定该值始终是ASCII数字,则只需减去'0'
:
int value = a[a.Length - 1] - '0';
不过要注意,对于非数字输入,这将悄悄地给出“奇数”结果
3不应该存储在变量c中吗
否,'3'
的整数表示应该存储在变量c
中,实际上是
你实际上在做:
char tmp = a[a.Length - 1]; // tmp = '3'
int c = tmp; // Implicit conversion to int
NET中的“字符”表示实际上是一个UTF-16代码单元。。。从char
转换为int
只需复制该代码单元
'3'
的代码单位是51,因此您的输出是51
如果您只使用char
,您会很好:
string a = "123";
char c = a[a.Length - 1];
Console.WriteLine(c); // "3"
如果要获取字符的“数值”,可以使用:
请注意,您必须强制转换为int
,因为返回类型是double
,以便处理表示分数、无穷大等的字符
如果您完全确定该值始终是ASCII数字,则只需减去'0'
:
int value = a[a.Length - 1] - '0';
请注意,对于非数字输入,这将默默地给出“奇数”结果。您可以使用字符和整数之间的隐式转换 或 使用从字符串到int的显式转换
可以在字符和整数之间使用隐式转换 或 使用从字符串到int的显式转换
谢谢;但是有没有一种方法可以让我不用转换成char就可以做到这一点呢?实际上,我想用3加一个数字,如果我将其转换为字符,我将无法添加..@user3497152:你有一个
char
-字符串基本上是一个char
值序列。这就是你开始的。。。您没有转换为char
。你想要的显然是从char
转换成int
——见我答案的结尾;但是有没有一种方法可以让我不用转换成char就可以做到这一点呢?实际上,我想用3加一个数字,如果我将其转换为字符,我将无法添加..@user3497152:你有一个char
-字符串基本上是一个char
值序列。这就是你开始的。。。您没有转换为char
。显然,您想要的是从char
转换为int
——请参见我答案的结尾。