2017-10-22 96 views
-7
Convert.ToString((input.Split(' ').Length + 1), 2).PadLeft(8, '0') 

可能有人解釋這行我編程使用C#控制檯應用程序

+0

歡迎堆棧溢出。這不是教程網站。您可以在[MSDN](http://msdn.microsoft.com)上找到有關C#的完整文檔。 –

回答

0

它需要一個輸入字符串(input),將其分解的空格字符(input.Split(' '))(大概是爲了讓「字」的數量),加1得到的數組的.Length(不知道爲什麼),轉換將該數字轉換爲二進制字符串(Convert.ToString(int, 2)將int轉換爲基數爲2的數字並將其作爲字符串返回),然後使用0字符填充字符串的左側,直到它的長度爲8.PadLeft(8, '0'))。

我的猜測是,這可能會用於某種編碼/解碼算法(?)。

這是在行動:

var inputStrings = new List<string> 
{ 
    "one", 
    "two words", 
    "this is three", 
    "this one is four", 
    "and this one has five" 
}; 

foreach(var input in inputStrings) 
{ 
    var result = Convert.ToString((input.Split(' ').Length + 1), 2).PadLeft(8, '0'); 

    Console.WriteLine($"{input.PadRight(22, ' ')} = {result}"); 
} 

Console.Write("\nDone!\nPress any key to exit..."); 
Console.ReadKey(); 

輸出

enter image description here

0

拆分起來:

var stringItems = input.Split(' '); 

拆分空格上輸入字符串


int itemCount = stringItems.Length + 1; 

然而許多項目都在收集中,添加一個到


var str = Convert.ToString(itemCount, 2); 

呼叫Convert.ToString的一些重載需要兩個整數作爲參數(我不知道這是什麼)。 Consult Documentation as we have no idea what this overload does

事實證明它:

32位有符號整數爲它的等效字符串表示的值轉換指定底

因此,我們必須從32字符串在鹼位整數2.


str.PadLeft(8, '0') 

馬確保字符串總共有8個字符,除已經存在的字符外全部爲0。


看起來我們創建了一個漂亮的二進制數。雖然我不知道沒有上下文的意義是什麼。