Phe*_*ide 8 javascript mac-address
我有一个MAC地址存储为原始的48位数字,我想将其拆分并以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));
Run Code Online (Sandbox Code Playgroud)
但是因为Javascript在进行移位操作时显然无法处理> 32位整数,所以最后两个八位字节总是出现0,
78:45:c4:26:0:0
Run Code Online (Sandbox Code Playgroud)
ole*_*leq 15
一个简单的方法如下:
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"
Run Code Online (Sandbox Code Playgroud)
但是,00当你的整数很短时(即mac = 150),我建议仅为病理情况添加其他组:
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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6191 次 |
| 最近记录: |