Tôi có địa chỉ MAC được lưu trữ dưới dạng số nguyên 48 bit và tôi muốn chia nhỏ nó ra và in theo định dạng hex chuẩn xx: xx: xx: xx: xx: xx. Ví dụ: số nguyên 81952921372024 sẽ trở thành 78: 45: c4: 26: 89: 4a. Nỗ lực đầu tiên của tôi là,Chuyển đổi địa chỉ MAC nguyên thành chuỗi trong Javascript
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));
Nhưng vì Javascript dường như không thể xử lý> số nguyên 32 bit khi thực hiện thao tác chuyển đổi, còn hai octet cuối luôn đi ra để 0,
78:45:c4:26:0:0
'2333752735057272..toString (16)' cung cấp '84a8926c44578' cho tôi trong Chrome. Điều gì sẽ xảy ra nếu bạn lấy nó, cắt chữ số đầu tiên và đảo ngược các octet? – bfavaretto
Bạn chắc chắn rằng địa chỉ MAC là đúng? Nó trông ngoài tầm với tôi. – user2357112
Thật vậy, JavaScript không có khái niệm> số nguyên 32 bit hoặc thậm chí là số nguyên 32 bit; nó chỉ có một kiểu 'số', có nghĩa là các giá trị dấu phẩy động (64-bit), và các phép toán số nguyên-y khác nhau, chẳng hạn như thay đổi bit, thực hiện chuyển đổi ngầm đến và từ các số nguyên 32 bit. – ruakh