3

有没有办法将整数格式化为 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);
}

目前我在方法中有????asnull和一些特殊情况代码:

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);
  }
}
4

4 回答 4

6

您可以将其int转换为char

string s = ((char)n).ToString();

没有办法告诉string.Format将整数格式化为字符。没有自定义标准的数字格式字符串可以对此有所帮助。

您当前的解决方案简单且有效,因此您应该保留它,除非您开始涉足更多选择。如果发生这种情况,您可能需要引入一个抽象,该抽象将为国家/地区返回正确的表示形式(例如CountryCheckDigitFormatter,将包含国家/地区和ToString每个国家/地区的自定义方法)。

于 2012-11-29T14:27:03.493 回答
2

这可以接受吗?

string a = Char.ConvertFromUtf32(65);

Console.WriteLine(a); //prints 'A'
于 2012-11-29T14:26:51.073 回答
1

好吧,要获得一个角色,您只需施放:

char c = (char) n;

如果您需要将其作为字符串获取,您可以调用ToString

string x = c.ToString();
于 2012-11-29T14:26:48.060 回答
1

简单的:

int i = 65;
char c = Convert.ToChar(i);
于 2012-11-29T14:35:12.070 回答