" Pad Left"在char数组上使用0'

时间:2015-04-17 09:27:48

标签: c# arrays

G'天,

我有一个char数组,根据某些数据的长度而变化。但阵列永远不会超过24。但是,它可能小于24.因此,我需要向左边移动"使用0' s,在数组的左侧添加更多元素以使其成为24.我在下面有一些代码执行此操作,只是想知道是否有更快的方法或更有效的方法来执行此操作。谢谢!

注意:我不认为这是重复的,因为我正在使用char []而不是字符串。

char[] dataLen = Convert.ToString(data.Length, 2).ToCharArray();
int j = 0;
char[] tmp = new char[24];
for (int i = 0; i < 24; i++)
{
     if (i < (24 - dataLen.Length))
          tmp[i] = '0';
     else
          tmp[i] = dataLen[j++];
}
dataLen = tmp;

3 个答案:

答案 0 :(得分:3)

为什么不简单地使用String.PadLeft

 char[] data = "abcdefgh".ToCharArray(); // sample data
 data = new string(data).PadLeft(24, '0').ToCharArray();

这应该是高效的,并且也非常易读。

答案 1 :(得分:1)

我只需使用string进行所有操作,并使用PadLeft进行填充。

string input = new string(data);
string result = input.PadLeft(24, '0');

如果您确实需要,请将其转换为char[]

char[] chars = result.ToCharArray();

(另外,您的Convert.ToString(data.Length, 2)不会返回其字符串表示形式,new string(data)会这样做

答案 2 :(得分:1)

怎么样:

string z24 = "000000000000000000000";
tmp = z24.Take(24 - dataLen.Length).Union(dataLen).ToArray();