How would one generate a MAC address in Javascript?

后端 未结 3 687
温柔的废话
温柔的废话 2021-02-07 15:48

I need to generate a random MAC address for a project of mine, and I can not get it to work. Below is my current code (that is not working).

function genMAC(){
/         


        
相关标签:
3条回答
  • 2021-02-07 16:15
    "XX:XX:XX:XX:XX:XX".replace(/X/g, function() {
      return "0123456789ABCDEF".charAt(Math.floor(Math.random() * 16))
    });
    

    jsfiddle http://jsfiddle.net/guest271314/qhbC9/

    0 讨论(0)
  • 2021-02-07 16:15

    Here is a bit more of a "clean" version of your code, which takes the number of loops down to one. On each iteration of the loop, it appends two random characters to the macAddress variable, and if it's not the last iteration, it also appends a colon. Then it returns the generated address.

    function genMAC(){
        var hexDigits = "0123456789ABCDEF";
        var macAddress = "";
        for (var i = 0; i < 6; i++) {
            macAddress+=hexDigits.charAt(Math.round(Math.random() * 15));
            macAddress+=hexDigits.charAt(Math.round(Math.random() * 15));
            if (i != 5) macAddress += ":";
        }
    
        return macAddress;
    }
    

    Aside from being more complicated than necessary, there were two problems with your code. The first was that mac-address is an invalid variable name due to the dash. That caused the code to not work at all. With that fixed, the other problem was that when setting the MAC address variable at the end, you appended arrays to a string. That caused each of the arrays containing two hex digits to be converted to a string, which meant a comma was put between the two digits.

    0 讨论(0)
  • 2021-02-07 16:27

    try this Jsfiddle

    all i did was to fix the display part :

    function genMAC(){
    var colours = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
    // Make variable to hold 6 character HEX array
    var partA = new Array(1);
    var partB = new Array(1);
    var partC = new Array(1);
    var partD = new Array(1);
    var partE = new Array(1);
    var partF = new Array(1);
    var mac_address="";
    for (i=0;i<2;i++){
    
        // Loop for partA
        partA[i]=colours[Math.round(Math.random()*14)];
    }
        for (i=0;i<2;i++){
        // Loop through 6 times, randomising the letter added to the array
        partB[i]=colours[Math.round(Math.random()*14)];
    }
        for (i=0;i<2;i++){
        // Loop through 6 times, randomising the letter added to the array
        partC[i]=colours[Math.round(Math.random()*14)];
    }
        for (i=0;i<2;i++){
        // Loop through 6 times, randomising the letter added to the array
        partD[i]=colours[Math.round(Math.random()*14)];
    }
        for (i=0;i<2;i++){
        // Loop through 6 times, randomising the letter added to the array
        partE[i]=colours[Math.round(Math.random()*14)];
    }
        for (i=0;i<2;i++){
        // Loop through 6 times, randomising the letter added to the array
        partF[i]=colours[Math.round(Math.random()*14)];
    }
    // Returns like "a10bc5". It is likely that you may need to add a "#".
    mac_address = partA[0]+ partA[1] + ":" + partB[0]+ partB[1] + ":" + partC[0]+ partC[1] + ":" + partD[0] + partD[1] + ":" + partE[0] + partE[1] + ":" + partF[0] + partF[1];
    alert(mac_address);
    }
    

    if you just print/alert the array for example partA it would display like 3,2 and not 32 so you need to concatenate it each index it has.

    0 讨论(0)
提交回复
热议问题