繁体   English   中英

字符数组上的“ Pad Left”(带有0)

[英]“Pad Left” with 0's on a char array

G'day,

我有一个char数组,其大小根据某些数据的长度而变化。 数组永远不会大于24。 但是,它可能小于24。因此,我需要用0来“向左填充”,例如在数组的左侧添加更多元素以使其变为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;

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

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

那应该是有效的并且也很可读。

我只是将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)则返回)

怎么样 :

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM