2012-07-30 112 views
2

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

+0

你想要ASCII或文本?一个“字符串”会更容易使用,但不是每个字符一个字节。 – 2012-07-30 05:41:04

回答

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则字符
  • 铸造的价值charint将让你得到的ASCII值(你可以跳过这个演员,我不知道)
  • 的“X”格式的字符串转换一个numeri C值为十六进制
  • String.Join(" ", ...)用空格把它全部回来一起在这取决于如果你真的想ASCII字符
  • 之间
+0

你能解释一下你的答案吗? – maniac84 2012-07-30 05:38:48

+0

@ maniac84我添加了一个解释。希望它有帮助 – 2012-07-30 05:43:25

+0

拍摄,我想你想要它填充到三个字符的字符串。 – 2012-07-30 05:45:04

4

,或者如果你想要的文字。下面的代码将做到这两个。

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保存到文件中,但如果您使用的是对象,则它们使用UTF-16编码。

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

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