繁体   English   中英

如何将整数格式化为ASCII / Unicode字符(不仅仅是转换为char)

[英]How to format integer as ASCII/Unicode character (WITHOUT just casting to char)

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

目前我有???? as 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);
  }
}

您可以将int转换为char

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

无法告诉string.Format将整数格式化为字符。 没有自定义标准数字格式字符串可以帮助解决这个问题。

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

这可以接受吗?

string a = Char.ConvertFromUtf32(65);

Console.WriteLine(a); //prints 'A'

嗯,要获得一个角色 ,你可以投下:

char c = (char) n;

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

string x = c.ToString();

简单:

int i = 65;
char c = Convert.ToChar(i);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM