Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;左键“Pad Left”;与0';字符数组上的s_C#_Arrays - Fatal编程技术网

C# &引用;左键“Pad Left”;与0';字符数组上的s

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

G'day

我有一个字符数组,它的大小根据一些数据的长度而变化。不过,阵列的大小永远不会超过24。但是,它可能小于24。因此,我需要用0“pad left”,如在数组左侧添加更多元素以使其为24。我下面有一些代码可以做到这一点,只是想知道是否有一种更快或更有效的方法来做到这一点。谢谢

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

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的代码一开始效率低下。但这比必要的更复杂。