在C#中将整数转换为Ascii字符串

时间:2012-07-30 05:33:21

标签: c#

我想将整数转换为3个字符的ascii字符串。例如,如果integer为123,则我的ascii字符串也将为"123"。如果整数是1,那么我的ascii将是"001"。如果整数是45,那么我的ascii字符串将是"045"。到目前为止,我已经尝试Convert.ToString,但无法得到结果。怎么样?

3 个答案:

答案 0 :(得分:10)

int myInt = 52;
string myString = myInt.ToString("000");

myString现在是“052”。希望它会有所帮助

答案 1 :(得分:5)

回答新问题:

您正在寻找String.PadLeft。像myInteger.ToString().PadLeft(3, '0')一样使用它。或者,只需使用"0" custom format specifier即可。与myInteger.ToString("000")一样。


回答原始问题,返回"0x31 0x32 0x33"之类的字符串:

String.Join(" ",myInteger.ToString().PadLeft(3,'0').Select(x=>String.Format("0x{0:X}",(int)x))

说明:

  • 第一个ToString()会将您的整数123转换为字符串表示形式"123"
  • PadLeft(3,'0')使用0作为填充字符将返回的字符串填充为三个字符
  • 字符串可以作为char的数组枚举,因此.Select选择此数组
  • 对于数组中的每个字符,将其格式化为0x,然后将其格式化为
  • char投射到int将允许您获取ASCII值(您可能可以跳过此演员,我不确定)
  • “X”格式字符串将数值转换为十六进制
  • String.Join(" ", ...)将所有内容重新组合在一起,中间有空格

答案 2 :(得分:4)

这取决于您是否真的需要ASCII字符或是否需要文本。以下代码将同时执行这两项操作。

int value = 123;
// Convert value to text, adding leading zeroes.
string text = value.ToString().PadLeft(3, '0');
// Convert text to ASCII.
byte[] ascii = Encoding.ASCII.GetBytes(text);

意识到.Net不使用ASCII进行文本操作。您可以将ASCII保存到文件中,但如果您使用的是string个对象,则它们将以UTF-16编码。