javascript - 在 Javascript 中将整数 MAC 地址转换为字符串

标签 javascript mac-address

我有一个存储为原始 48 位数字的 MAC 地址,我想将其拆分并以 xx:xx:xx:xx:xx:xx 的标准十六进制格式打印。例如,原始编号 81952921372024 应变为 78:45:c4:26:89:4a。我的第一次尝试是,

var suspect = {mac: 2333752735057272};
console.log(
    Number(suspect.mac & 0xFF).toString(16) + ":" +
    Number((suspect.mac & 0xFF00) >> 8).toString(16) + ":" +
    Number((suspect.mac & 0xFF0000) >> 16).toString(16) + ":" +
    Number((suspect.mac & 0xFF000000) >> 24).toString(16) + ":" +
    Number((suspect.mac & 0xFF00000000) >> 32).toString(16) + ":" +
    Number((suspect.mac & 0xFF0000000000) >> 48).toString(16));

但是因为 Javascript 在进行移位操作时显然无法处理 > 32 位整数,所以最后两个八位字节总是为 0,

78:45:c4:26:0:0 

最佳答案

一个简单的方法如下所示:

var mac = 81952921372024;

mac.toString( 16 )             // "4a8926c44578"
        .match( /.{1,2}/g )    // ["4a", "89", "26", "c4", "45", "78"]
        .reverse()             // ["78", "45", "c4", "26", "89", "4a"]
        .join( ':' )           // "78:45:c4:26:89:4a"

> "78:45:c4:26:89:4a"

但是,我建议在您的整数非常短(即 mac = 150)时仅针对病态情况添加额外的 00 组:

var mac = 81952921372024;

new Array( 6 ).join( '00' )    // '000000000000'
    .match( /../g )            // [ '00', '00', '00', '00', '00', '00' ]
    .concat( 
        mac.toString( 16 )     // "4a8926c44578"
           .match( /.{1,2}/g ) // ["4a", "89", "26", "c4", "45", "78"]
    )                          // ["00", "00", "00", "00", "00", "00", "4a", "89", "26", "c4", "45", "78"]
    .reverse()                 // ["78", "45", "c4", "26", "89", "4a", "00", "00", "00", "00", "00", "00", ]
    .slice( 0, 6 )             // ["78", "45", "c4", "26", "89", "4a" ]
    .join( ':' )               // "78:45:c4:26:89:4a"

> "78:45:c4:26:89:4a"

关于javascript - 在 Javascript 中将整数 MAC 地址转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17933471/

相关文章:

Javascript:通过名称访问闭包中的局部变量或变量

iphone - iphone 的 mac 地址是静态的吗?寻找一种方法来识别哪个用户在线

linux - 从日志中检查MAC

javascript - 使用 css 和 jQuery 实现按钮

javascript - {内容: [Circular] } mean in JavaScript?是什么

javascript - react : Stop page reload on clicking on anchor tag for scrolling

javascript - Optimizely 和 Visual Website Optimizer 如何处理可视 DOM 编辑?

networking - 网络中的物理地址和 MAC 地址有什么区别?

java - isReachable() 在 android 中返回 false

ios - 唯一识别iOS设备的最佳方法?