有没有办法将整数格式化为C#中的等效ASCII / Unicode字符?例如,如果我有以下代码:
int n = 65;
string format = ""; // what?
string s = string.Format(format, n);
我需要在字符串format
中放置什么来形成一个字符'A',写入s
- 基本上我正在寻找相当于在C中执行以下操作:
int n = 65;
char s[2];
char format = "%c";
sprintf(s, format, n); /* s <- 'A' */
编辑
我应该更多地解释一下我正在尝试做什么,因为显而易见的答案“把它变成了char”,并没有帮助。
我的情况是,我有一个表示银行帐号校验位的整数值,但需要输出一些国家/地区的字符和其他国家/地区的(0填充)数字字符串。我想知道是否有一种方法可以通过更改格式字符串来切换两者,因此我可以保存适当格式字符串的字典,键入国家/地区代码。
编辑2
(对于Oded)这样的事情......
IDictionary<string, string> ccFormat = new Dictionary<string, string>()
{
{ "GB", "{0:D}" }, // 0-9
{ "PT", "{0:D2}" }, // 00-99
{ "US", "{0:D3}" }, // 000-999
{ "IT", ???? } // A-Z -- What should ???? be?
};
string FormatCheckDigits(int digits, string country)
{
return string.Format(ccFormat[country], digits);
}
目前,????
为null
,方法中包含一些特殊案例代码:
string FormatCheckDigits(int digits, string country)
{
string format = ccFormat[country];
if (string.IsNullOrEmpty(format))
{
// special case: format as A-Z
return ((char) digits).ToString();
}
else
{
// Use retrieved format string
return string.Format(format, digits);
}
}
答案 0 :(得分:6)
您可以将int
转换为char
:
string s = ((char)n).ToString();
无法告诉string.Format
将整数格式化为字符。没有custom或standard数字格式字符串可以帮助解决此问题。
您当前的解决方案很简单且有效,因此您应该保留它,除非您开始涉及更多参与选项。如果发生这种情况,您可能需要引入一个抽象,该抽象将返回国家/地区的正确表示(例如,一个将保留该国家/地区的CountryCheckDigitFormatter
和一个国家/地区的自定义ToString
方法。)
答案 1 :(得分:2)
这可以接受吗?
string a = Char.ConvertFromUtf32(65);
Console.WriteLine(a); //prints 'A'
答案 2 :(得分:1)
要获得字符,您可以直接投射:
char c = (char) n;
如果您需要将其作为字符串,则可以拨打ToString
:
string x = c.ToString();
答案 3 :(得分:1)
易:
int i = 65;
char c = Convert.ToChar(i);