我有一个以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
2333752735057272..toString(16)
会给我返回84a8926c44578
。如果你把它的第一个数字裁掉并且反转八位字节序列,会得到什么呢? - bfavaretto.toString(16)
并按照我最初建议的方式反转八位字节即可。正如@ruakh指出的那样,由于位移操作,您正在丢失信息。 - bfavaretto