Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Format a MAC address using string.Format in c#

Tags:

string

c#

I have a mac address which is formatted like 0018103AB839 and I want to display it like: 00:18:10:3A:B8:39

I am trying to do this with string.Format but I cant really find the exact syntax.

right now I am trying something like this:

    string macaddress = 0018103AB839;
    string newformat = string.Format("{0:00:00:00:00:00:00}", macaddress);

Is this even possible? or should I use string.Insert?

like image 563
2pietjuh2 Avatar asked Nov 27 '12 12:11

2pietjuh2


3 Answers

Reformat a string to display it as a MAC address:

var macadres = "0018103AB839";

var regex = "(.{2})(.{2})(.{2})(.{2})(.{2})(.{2})";
var replace = "$1:$2:$3:$4:$5:$6";
var newformat = Regex.Replace(macadres, regex, replace);    

// newformat = "00:18:10:3A:B8:39"

If you want to validate the input string use this regex (thanks to J0HN):

var regex = String.Concat(Enumerable.Repeat("([a-fA-F0-9]{2})", 6));
like image 138
Marc Avatar answered Oct 24 '22 08:10

Marc


string input = "0018103AB839";

var output = string.Join(":", Enumerable.Range(0, 6)
    .Select(i => input.Substring(i * 2, 2)));
like image 6
Jon B Avatar answered Oct 24 '22 08:10

Jon B


Suppose that we have the Mac Address stored in a long. This is how to have it in a formatted string:

ulong lMacAddr = 0x0018103AB839L;
string strMacAddr = String.Format("{0:X2}:{1:X2}:{2:X2}:{3:X2}:{4:X2}:{5:X2}",
    (lMacAddr >> (8 * 5)) & 0xff, 
    (lMacAddr >> (8 * 4)) & 0xff,
    (lMacAddr >> (8 * 3)) & 0xff,
    (lMacAddr >> (8 * 2)) & 0xff,
    (lMacAddr >> (8 * 1)) & 0xff,
    (lMacAddr >> (8 * 0)) & 0xff);
like image 5
Sina Iravanian Avatar answered Oct 24 '22 08:10

Sina Iravanian