我想将一个整数转换为 3 个字符的 ascii 字符串。例如,如果整数是 123,我的 ascii 字符串也将是"123"
. 如果整数是 1,那么我的 ascii 将是"001"
. 如果整数是 45,那么我的 ascii 字符串将是"045"
. 到目前为止,我已经尝试过Convert.ToString
,但无法得到结果。如何?
问问题
11991 次
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
字符的值 - 转换
char
toint
将允许您获取 ASCII 值(您可能可以跳过此转换,我不确定) - “X”格式字符串将数值转换为十六进制
String.Join(" ", ...)
将它们重新组合在一起,中间有空格
于 2012-07-30T05:37:51.117 回答