我有一个存储为原始 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