C# &引用;左键“Pad Left”;与0';字符数组上的s
G'day 我有一个字符数组,它的大小根据一些数据的长度而变化。不过,阵列的大小永远不会超过24。但是,它可能小于24。因此,我需要用0“pad left”,如在数组左侧添加更多元素以使其为24。我下面有一些代码可以做到这一点,只是想知道是否有一种更快或更有效的方法来做到这一点。谢谢 注意:我不认为这是重复的,因为我使用的是char[]而不是字符串C# &引用;左键“Pad Left”;与0';字符数组上的s,c#,arrays,C#,Arrays,G'day 我有一个字符数组,它的大小根据一些数据的长度而变化。不过,阵列的大小永远不会超过24。但是,它可能小于24。因此,我需要用0“pad left”,如在数组左侧添加更多元素以使其为24。我下面有一些代码可以做到这一点,只是想知道是否有一种更快或更有效的方法来做到这一点。谢谢 注意:我不认为这是重复的,因为我使用的是char[]而不是字符串 char[]dataLen=Convert.ToString(data.Length,2.tocharray(); int j=0; char[]t
char[]dataLen=Convert.ToString(data.Length,2.tocharray();
int j=0;
char[]tmp=新字符[24];
对于(int i=0;i<24;i++)
{
如果(i<(24-数据长度))
tmp[i]=“0”;
其他的
tmp[i]=dataLen[j++];
}
dataLen=tmp;
我只需对所有操作使用字符串,并使用PadLeft
进行填充
string input = new string(data);
string result = input.PadLeft(24, '0');
如果确实需要,请将其转换为char[]
:
char[] chars = result.ToCharArray();
(另外,您的Convert.ToString(data.Length,2)
不会返回它们的字符串表示形式,newstring(data)
会返回它们的字符串表示形式)我只需对所有操作使用string
,并使用PadLeft
进行填充即可
string input = new string(data);
string result = input.PadLeft(24, '0');
如果确实需要,请将其转换为char[]
:
char[] chars = result.ToCharArray();
(另外,您的Convert.ToString(data.Length,2)
不会返回它们的字符串表示形式,新字符串(data)
会返回它们)为什么不直接使用string.PadLeft
char[] data = "abcdefgh".ToCharArray(); // sample data
data = new string(data).PadLeft(24, '0').ToCharArray();
这应该是有效的,而且可读性也很强。为什么不简单地使用String.PadLeft
char[] data = "abcdefgh".ToCharArray(); // sample data
data = new string(data).PadLeft(24, '0').ToCharArray();
这应该是高效的,而且可读性也很强。那么:
string z24 = "000000000000000000000";
tmp = z24.Take(24 - dataLen.Length).Union(dataLen).ToArray();
那么:
string z24 = "000000000000000000000";
tmp = z24.Take(24 - dataLen.Length).Union(dataLen).ToArray();
为什么不简单dataLen=data.PadLeft(24,'0').tocharray()代码>?什么类型的数据?不能转换为字符串,使用string.PadLeft(),然后使用.ToCharray()转换回来吗?只是为了简化代码。我不知道这需要多大的性能。@Grundy data也是一个字符[],忘了提及。@VictorySaber我想我可以这么做。@Rhexis我应该加上这个作为答案。我至少能得到一次投票吗?为什么不简单dataLen=data.PadLeft(24,'0').ToCharArray()代码>?什么类型的数据?不能转换为字符串,使用string.PadLeft(),然后使用.ToCharray()转换回来吗?只是为了简化代码。我不知道这需要多大的性能。@Grundy data也是一个字符[],忘了提及。@VictorySaber我想我可以这么做。@Rhexis我应该加上这个作为答案。我至少能得到一个向上投票吗?你和我一样,也混淆了PadLeft
-第一个参数-是TotalWidth吗?你和我一样,也混淆了PadLeft
-第一个参数-是TotalWidth哇,谢谢!这是一行:char[]dataLen=Convert.ToString(data.Length,2).PadLeft(24,'0').tocharray();当然更短,可读性更强,但我很难看到它将如何“更快”或“更高效”@KooKiz:我不认为它更高效。但问题是,我不明白为什么OP的代码一开始效率低下。但这比必要的复杂多了。哇,谢谢你!这是一行:char[]dataLen=Convert.ToString(data.Length,2).PadLeft(24,'0').tocharray();当然更短,可读性更强,但我很难看到它将如何“更快”或“更高效”@KooKiz:我不认为它更高效。但问题是,我不明白为什么OP的代码一开始效率低下。但这比必要的更复杂。