我想将整数转换为3个字符的ascii字符串。例如,如果integer为123,则我的ascii字符串也将为"123"
。如果整数是1,那么我的ascii将是"001"
。如果整数是45,那么我的ascii字符串将是"045"
。到目前为止,我已经尝试Convert.ToString
,但无法得到结果。怎么样?
答案 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值(您可能可以跳过此演员,我不确定)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编码。