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;
答案 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();