Cách chuyển đổi cơ số hoạt động
Mỗi hệ đếm vị trí biểu diễn một giá trị dưới dạng tổng các chữ số nhân với lũy thừa của cơ số. Chuyển đổi cơ số có nghĩa là viết lại cùng một giá trị theo một chuỗi lũy thừa khác.
- Kiểm tra bảng chữ số đầu vào. Mỗi cơ số chấp nhận một tập chữ số cụ thể. Nhị phân chấp nhận 0 và 1; bát phân chấp nhận 0-7; thập phân chấp nhận 0-9; hex chấp nhận 0-9 và A-F. Ký tự nằm ngoài bảng chữ số đã chọn sẽ hiển thị lỗi nội tuyến trước khi bất kỳ phép chuyển đổi nào được thực hiện.
- Phân tích giá trị. Với các giá trị phù hợp với JavaScript Number (tối đa 2^53-1), công cụ gọi
parseInt(text, base). Vượt ngưỡng đó, nó chuyển sangBigIntđể phép chuyển đổi vẫn chính xác với các số nguyên tùy ý lớn. - Hiển thị lại theo từng cơ số đích. Giá trị đã phân tích được chuyển đổi sang từng cơ số đầu ra qua
Number.prototype.toString(base)hoặcBigInt.prototype.toString(base). Bốn ô chuẩn (nhị phân, bát phân, thập phân, hex) và ô cơ số tùy chỉnh cập nhật cùng nhau. - Áp dụng định dạng. Nút bật tiền tố thêm 0b, 0o hoặc 0x vào đầu kết quả nhị phân, bát phân và hex. Nhóm chữ số chèn dấu gạch dưới sau mỗi bốn chữ số nhị phân và sau mỗi hai chữ số hex. Nút bật kiểu chữ hex chọn chữ hoa hoặc chữ thường cho A-F.
- Đồng bộ trực tiếp giữa các ô. Chỉnh sửa bất kỳ ô nào sẽ kích hoạt chuyển đổi lại với độ trễ 100 ms, cập nhật các ô còn lại. Ô bạn đang gõ được coi là nguồn dữ liệu chính xác tại mỗi lần nhấn phím.
Tại sao dùng công cụ chuyển đổi cơ số
- Đọc bản dump bộ nhớ. Trình gỡ lỗi, trình dịch ngược và trình xem core dump hiển thị địa chỉ và giá trị thanh ghi dưới dạng hex. Dịch chúng sang thập phân giúp so sánh với số lượng, kích thước và độ lệch được báo cáo ở những nơi khác trong cùng trace.
- Làm việc với mã màu. CSS, công cụ thiết kế và định dạng hình ảnh biểu diễn màu sắc bằng bộ ba hex như #d2511a. Chuyển đổi mỗi cặp sang thập phân cho ra dạng rgb(210, 81, 26) mà bộ chọn màu hoặc công cụ kiểm tra khả năng tiếp cận mong đợi.
- Giải mã quyền truy cập tệp. Giá trị chmod của Unix được viết bằng bát phân: 755 có nghĩa là rwxr-xr-x khi bạn dịch từng chữ số bát phân thành ba bit nhị phân của nó. Công cụ hiển thị ánh xạ đó trong một bước để bạn có thể kiểm tra tập quyền mà không cần tra man page.
- Gỡ lỗi cờ bit. Giao thức mạng, syscall nhân và thanh ghi phần cứng đóng gói nhiều cờ boolean vào một số nguyên duy nhất. Đọc số nguyên ở dạng nhị phân cho thấy ngay những bit nào được đặt, giúp truy tìm lý do cờ không có hiệu lực.
Ứng dụng phổ biến
Chuyển đổi cơ số xuất hiện trong công việc hàng ngày của lập trình viên, bảo mật và phần cứng bất cứ khi nào một con số không đơn giản chỉ là một số đếm.
- Firmware nhúng: đọc hex dump từ đầu dò JTAG, tìm địa chỉ của một hàm và viết lệnh breakpoint bằng offset thập phân mà script gỡ lỗi của bạn chấp nhận.
- Bảo mật mạng: phân tích mặt nạ mạng 32-bit in dưới dạng thập phân có dấu chấm trở lại nhị phân để đếm độ dài tiền tố, sau đó viết dạng CIDR cho quy tắc ACL.
- Câu đố CTF và thử thách mật mã: chuyển đổi qua lại giữa hex, thập phân và nhị phân khi so sánh một đoạn khóa bị rò rỉ với bản rõ ứng viên theo XOR.
Ví dụ minh họa
Nhập 255 vào ô thập phân. Ô hex cập nhật thành FF (hoặc 0xFF khi bật tiền tố), ô nhị phân thành 11111111 (được nhóm là 1111_1111), và ô bát phân thành 377. Đổi cơ số của ô tùy chỉnh thành 36 và cùng giá trị đó hiển thị là 73. Nhập một giá trị lớn hơn nhiều như 123456789012345678901234567890 vào ô thập phân; ô hex dùng đường dẫn BigInt và hiển thị 18EE90FF6C373E0EE4E3F0AD2.
FAQ
Cơ số là gì?
Cơ số, hay radix, là số lượng chữ số phân biệt mà một hệ đếm vị trí sử dụng trước khi chuyển sang vị trí tiếp theo. Thập phân (cơ số 10) dùng 0-9; nhị phân (cơ số 2) chỉ dùng 0 và 1; thập lục phân (cơ số 16) dùng 0-9 cộng với A-F. Giá trị của một số không thay đổi khi bạn chuyển cơ số — chỉ có cách các chữ số được viết và nhóm lại là thay đổi.
Tại sao lập trình viên dùng thập lục phân?
Một chữ số hex ánh xạ chính xác bốn bit nhị phân, vì vậy hai chữ số hex bao phủ một byte và tám chữ số hex bao phủ một từ 32-bit. Điều này làm cho hex trở thành dạng đọc được ngắn gọn nhất cho địa chỉ bộ nhớ, nội dung thanh ghi, bộ ba màu và khóa mật mã. Đọc 0xFF nhanh hơn đọc 11111111, và mẫu bit vẫn ở đó nếu bạn cần.
Có thể chuyển đổi vượt quá cơ số 36 không?
Công cụ này dừng ở cơ số 36 vì đó là giới hạn trên của API parseInt và toString gốc của JavaScript, chấp nhận 0-9 theo sau bởi A-Z làm bảng chữ số. Cơ số 37-62 có thể dùng bảng chữ số tùy chỉnh (Base58 dùng trong địa chỉ Bitcoin là một ví dụ) nhưng chúng được theo dõi như một công cụ riêng vì mỗi cơ số cao hơn cần thứ tự chữ số chuẩn riêng.
Công cụ này có xử lý số âm và số thực không?
Số nguyên âm được hiển thị với dấu trừ đứng trước trong mọi cơ số, giống hành vi của Number.prototype.toString. Biểu diễn bù hai theo độ rộng bit đã chọn (8, 16, 32, 64) là một chế độ xem riêng chúng tôi dự định thêm vào. Chuyển đổi cơ số cho số thực cũng nằm ngoài phạm vi của phiên bản này; công cụ chỉ xử lý các số nguyên.
Chuyển đổi cơ số là một công việc nhỏ nhưng xuất hiện lặp đi lặp lại trong công việc firmware, bảo mật và đồ họa. Thực hiện trong tab trình duyệt, với cùng các nguyên hàm số học mà Node và V8 đã tích hợp sẵn, giúp công việc nhanh chóng và dữ liệu luôn ở trên máy của bạn.