我有一个4字节的值,我转换为Int32,然后在文本框中显示它.没有问题.当我尝试用0填充字符串时出现问题.当我显示十进制数时,它应该总是包含8个字符,所以如果它小于我想要用0填充它.
string parmDecString = BitConverter.ToInt32(testNum, 0).ToString();
Console.WriteLine("length: {0} - {1}", parmDecString.Length, (8 - parmDecString.Length));
for (int l=0; l < (8-parmDecString.Length); l++)
{
parmDecString = "0" + parmDecString;
}
textBox74.Text = parmDecString;
Run Code Online (Sandbox Code Playgroud)
这是我根据不同的'parmDecString'值得到的文本框中的输出:
parmDecString = "123"
Console: length: 3 - 5
textbox: 000123 <=== only 3 times in the 'for' loop, expected 5x
parmDecString = "12345"
Console: length: 5 - 3
textbox: 0012345 <=== only 2 times in the 'for' loop, expected 3x
parmDecString = "12345678"
Console: length: 8 - 0
textbox: 12345678 <=== as expected
Run Code Online (Sandbox Code Playgroud)
首先,对此的正确答案就是使用提供的格式字符串.在您的情况下,如果您存储的数字paramDec将paramDec.ToString("D8");用于8位整数字符串表示.
你的for循环不起作用的原因是你正在迭代直到你到达8 - paramDecString.Length但是当你追加0时这个长度不断变化.如果您首先存储值,它将起作用:
int numZeroes = (8-parmDecString.Length);
for (int l=0; l < numZeroes; l++)
{
parmDecString = "0" + parmDecString;
}
Run Code Online (Sandbox Code Playgroud)
此外,像这样的字符串附加是昂贵的.请考虑使用,StringBuilder因为每次附加时都不会创建新字符串.
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |