Start by literally breaking it up - use
var
to get the "bits" apart, work from the left and process brackets as you meet them:
var inJoin = (input.Split('.').Select(x => Convert.ToString(Int32.Parse(x), 2).PadLeft(8, '0'))).ToArray();
return String.Join(".", inJoin);
var beforeArray = input.Split('.').Select(x => Convert.ToString(Int32.Parse(x), 2).PadLeft(8, '0'));
var inJoin = beforeArray.ToArray();
return String.Join(".", inJoin);
var split = input.Split('.');
var beforeArray = split.Select(x => Convert.ToString(Int32.Parse(x), 2).PadLeft(8, '0'));
var inJoin = beforeArray.ToArray();
return String.Join(".", inJoin);
You can then use Intellisense to correct the types:
string[] split = input.Split('.');
var beforeArray = split.Select(x => Convert.ToString(Int32.Parse(x), 2).PadLeft(8, '0'));
string[] inJoin = beforeArray.ToArray();
return String.Join(".", inJoin);
The "bit inside the Select" is also pretty simple to break down:
private string BreakItDown(string x)
{
int intX = Int32.Parse(x);
string converted = Convert.ToString(intX, 2);
return converted.PadLeft(8, '0');
}
private string myFunction(string input)
{
string[] split = input.Split('.');
var beforeArray = split.Select(x => BreakItDown(x));
string[] inJoin = beforeArray.ToArray();
return String.Join(".", inJoin);
So, what it's it doing? converting a sequence of decimal numbers separated by dots to 8 digit binary numbers separated by dots
So "192.168.0.1" is converted to "11000000.10101000.00000000.00000001"
But it's actually more readable as a single line ... :laugh: