我在c#中有一个char:
char foo = '2';
Run Code Online (Sandbox Code Playgroud)
现在我想把2变成一个int.我发现Convert.ToInt32返回char的实际十进制值而不是数字2.以下将起作用:
int bar = Convert.ToInt32(new string(foo, 1));
Run Code Online (Sandbox Code Playgroud)
int.parse也适用于字符串.
C#中没有本地函数从char到int而不是字符串吗?我知道这是微不足道的,但似乎很奇怪,直接进行转换没有任何原生的东西.
可能重复:
c#将char转换为int
这有效:
int val = Convert.ToInt32("1");
Run Code Online (Sandbox Code Playgroud)
但这不是:
int val = Convert.ToInt32('1'); // returns 49
Run Code Online (Sandbox Code Playgroud)
这不应该转换为实际的int吗?
这可能是一个不成熟的问题,可能是我遗漏了一些东西,但我的问题是
试图转换char到int拿到ASCII的那个值char,在大多数情况下,我得到正确/预期的ASCII的特定代码char,在某些情况下,我不知道.有人能解释一下为什么吗?
例子:
// Example 1:-
Console.WriteLine((int)'a');
// gives me 97 perfect!
// Example 2:-
Console.WriteLine((char)1); gives me ?
// now
Console.WriteLine((int )'?');
// this should give me 1, instead it gives me 9786 why?
Run Code Online (Sandbox Code Playgroud)
这发生在ASCII> 127或ASCII < 32.
我正在制作一个信用卡验证程序,其中我要求的是一个16位数字(信用卡号)的字符串,我想将其转换为int数组.我怎么做?然后我需要将从第一个数字开始的每个其他数字乘以2.
char[] creditNumbers = creditCardNumber.ToCharArray();
creditNumbers[0] = (char)((int)(creditNumbers[0] * 2));
creditNumbers[2] = (char)((int)(creditNumbers[2] * 2));
creditNumbers[4] = (char)((int)(creditNumbers[4] * 2));
creditNumbers[6] = (char)((int)(creditNumbers[6] * 2));
creditNumbers[8] = (char)((int)(creditNumbers[8] * 2));
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所做的,但我的铸造没有正确完成.我该如何解决这个问题?
我正在尝试为主题游戏创建菜单,可以使用C#在命令提示符下运行.我遇到的问题是捕获菜单的用户输入.如果他们输入2然后它应该显示他们输入了第二个,如果没有,那么它会说他们没有显示第二个.
我遇到的问题是它不会将用户输入转换为工作整数,并且要么说它不能显式地从System.ConsoleKeyInfo转换为int或字符串转换为int.
using System;
namespace MasterMind
{
class Program
{
static void Main(string[] args)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(" MasterMind's Main Menu");
Console.WriteLine(" 1: Play");
Console.WriteLine(" 2: Help");
Console.WriteLine(" 0: Exit");
int userinput = Console.ReadKey();
if (Nuserinput == 2);
{
Console.WriteLine("This is a number 2");
}
else
{
Console.WriteLine("This is not a number 2");
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 看起来这整个简单的代码是正确的,但是当我点击开始并输入任何数字(例如4或6)时,唯一的输出是每次"else if"!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
int c = Convert.ToInt32(Console.Read());
if (c >= 0 && c < 5)
{
Console.Write("# is > 0");
}
else if (c >= 5)
{
Console.Write("# is > 5");
}
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我目前正在创建一个程序,它使用数组来分类文本文档中的ASCII字符.在创建阵列本身时,我很困惑,这是项目功能的关键部分.还建议我使用charfrequency对象创建数组,我知道我的代码对于这个特定的项目来说并不完全正确.我使用了另一个类似项目的代码,但不确定如何将其转换为从文件中读取文本的项目.我已经包含了我的charfrequency类代码,以供参考我正在尝试做的一般概念.我还需要以这样的格式显示结果:
H(72) = 1
e(101) = 1
l(108) = 2
o(111) = 1
.(46) = 1
Run Code Online (Sandbox Code Playgroud)
我不太了解编程,所以使用相对简单的术语进行详细解释会非常有帮助.
{
public class CharFrequency
{
private char m_character;
private long m_count;
public CharFrequency(char ch)
{
Character = ch;
Count = 0;
}
public CharFrequency(char ch, long charCount)
{
Character = ch;
Count = charCount;
}
public char Character
{
set
{
m_character = value;
}
get
{
return m_character;
}
}
public long Count
{
get
{
return m_count;
}
set
{
if …Run Code Online (Sandbox Code Playgroud) 我最近接受了一个项目作为个人爱好,以提高我的代码质量.我已经制作了这个方法,但我觉得我肯定是以某种方式工作了,我觉得有一种非常简单的方法可以做到这一点,而不必像这样一个大的开关?
我知道0-9可能只是.ToString()'然后解析为int并返回,但我不确定如何合并这个想法,同时还考虑其余的开关案例.
public static short ParseHeight(char input)
{
switch (input)
{
case '0':
return 0;
case '1':
return 1;
case '2':
return 2;
case '3':
return 3;
case '4':
return 4;
case '5':
return 5;
case '6':
return 6;
case '7':
return 7;
case '8':
return 8;
case '9':
return 9;
case 'a':
return 10;
case 'b':
return 11;
case 'c':
return 12;
case 'd':
return 13;
case 'e':
return 14;
case 'f':
return 15;
case 'g':
return …Run Code Online (Sandbox Code Playgroud) 我想使用Dictionary和Action调用一些静态方法
这里是我的代码:
public class Works
{
public static void DoWorkA()
{
Thread.Sleep(1000);
Console.WriteLine("Doing Work A");
}
public static void DoWorkB()
{
Thread.Sleep(2000);
Console.WriteLine("Doing Work B");
}
public static void DoWorkC()
{
Thread.Sleep(3000);
Console.WriteLine("Doing Work C");
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的主要方法
try
{
var DoJob = new Dictionary<int, Action>();
DoJob.Add(1, () => Works.DoWorkA());
DoJob.Add(2, () => Works.DoWorkB());
DoJob.Add(3, () => Works.DoWorkC());
var input = Console.Read();
var job = DoJob[input];
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
我foreach用来迭代键和密钥存在 …
c# ×10
.net ×2
checksum ×2
arrays ×1
ascii ×1
barcode ×1
char ×1
credit-card ×1
dictionary ×1
exception ×1
if-statement ×1
int ×1