2

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

4

3 回答 3

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

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

于 2012-07-30T05:51:30.433 回答
5

这取决于您是真的想要 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 编码。

于 2012-07-30T05:48:43.183 回答
5

回答新问题:

你正在寻找String.PadLeft. 像使用它myInteger.ToString().PadLeft(3, '0')。或者,只需使用"0"自定义格式说明符。喜欢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使用 a作为填充字符将返回的字符串填充为三个字符
  • 字符串可作为 的数组进行枚举char,因此.Select选择该数组
  • 对于数组中的每个字符,将其格式化为0x字符的值
  • 转换chartoint将允许您获取 ASCII 值(您可能可以跳过此转换,我不确定)
  • “X”格式字符串将数值转换为十六进制
  • String.Join(" ", ...)将它们重新组合在一起,中间有空格
于 2012-07-30T05:37:51.117 回答