Chuyển Đổi HEX Sang DEC, BIN Online

Công cụ chuyển đổi HEX sang DEC, BIN và ngược lại giúp chuyển nhanh giá trị giữa hệ thập lục phân, thập phân và nhị phân. Ngoài phép chuyển đổi cơ bản, công cụ còn hỗ trợ kiểm tra BYTE, WORD, INT, DINT, DWORD và FLOAT 32-bit, phù hợp khi đọc dữ liệu PLC, thanh ghi Modbus và các giao thức truyền thông công nghiệp.

Chỉ cần chọn hệ đầu vào HEX, DEC hoặc BIN, nhập giá trị cần chuyển đổi. Kết quả tương ứng sẽ được tính tự động.

 
0x
Thử nhanh:
Kết quả chuyển đổi
HEXHệ 16
—
DECHệ 10
—
BINHệ 2
—
OCTHệ 8
—
ASCII0–127
—
Dữ liệu PLC / ModbusCùng giá trị · cách đọc khác nhau
BYTE8 bit
Unsigned—
Signed INT8—
WORD16 bit · 1 thanh ghi
UInt16—
Int16—
DWORD32 bit · 2 thanh ghi
UInt32—
DINT / Int32—
FLOAT / REALIEEE 754 · 32 bit
Float32 · ABCD—
Thứ tự byte (byte order)
Byte đầu vào—Byte dùng giải mã—
ABCD: giữ nguyên thứ tự byte.
A · B · C · D là 4 byte đầu vào từ trái sang phải (HEX đủ 8 ký tự; thiếu sẽ thêm 0 ở đầu). Chỉ Float32 đổi theo lựa chọn này; HEX / DEC / BIN và thanh ghi giữ giá trị đầu vào.
Thử Float32 = 100.0:
Phân tách thanh ghi 32 bitHữu ích khi đọc dữ liệu Float / DINT từ 2 thanh ghi Modbus
High Word——
Low Word——
Byte 3 · 2 · 1 · 0 (MSB → LSB)—
Binary / Bit View—
Ghi nhớ: HEX, DEC và BIN là ba cách biểu diễn cùng một giá trị. Đối với PLC/Modbus, cùng 16 hoặc 32 bit có thể được giải mã thành WORD, INT, DINT hoặc FLOAT tùy thuộc vào định dạng của thiết bị.

HEX, DEC và BIN khác nhau như thế nào?

Đổi Hex sang DEC - BIN
Đổi Hex sang DEC – BIN

HEX, DEC và BIN là ba cách biểu diễn cùng một giá trị số.

Hệ đếm Cơ số Ký tự sử dụng Ví dụ
BIN 2 0, 1 11111111
DEC 10 0–9 255
HEX 16 0–9, A–F FF

Ví dụ: HEX FF = DEC 255 = BIN 11111111

Giá trị thực tế không thay đổi. Khác biệt chỉ nằm ở cách biểu diễn.

DEC – hệ thập phân

DEC hay Decimal là hệ cơ số 10 được sử dụng phổ biến trong tính toán và hiển thị giá trị cho người dùng.

Ví dụ:255 DEC

BIN – hệ nhị phân

BIN hay Binary sử dụng hai trạng thái 0 và 1.

Trong PLC và hệ thống điều khiển, Binary đặc biệt hữu ích khi kiểm tra từng bit của:

  • Digital Input / Output
  • Status Word
  • Alarm Word
  • Control Word
  • thanh ghi Modbus

Ví dụ:255 DEC = 11111111 BIN

Tương ứng 8 bit đều bằng 1.

HEX – hệ thập lục phân

HEX hay Hexadecimal là hệ cơ số 16, sử dụng các ký tự:

0 1 2 3 4 5 6 7 8 9 A B C D E F

HEX giúp biểu diễn dữ liệu nhị phân ngắn gọn hơn nên thường gặp khi kiểm tra:

  • thanh ghi PLC
  • Modbus register
  • địa chỉ bộ nhớ
  • Status Word
  • Bit Mask
  • mã lỗi
  • frame truyền thông

Ví dụ:11111111 BIN = FF HEX

Thay vì đọc 8 bit Binary, kỹ sư chỉ cần nhìn FF.

BYTE, WORD, INT, DINT và FLOAT khác nhau thế nào?

HEX, DEC và BIN chỉ là cách biểu diễn giá trị.

BYTE, WORD, INT, DINT và FLOAT lại mô tả cách dữ liệu được diễn giải.

Đây là điểm rất quan trọng khi đọc dữ liệu từ PLC hoặc Modbus.

Kiểu dữ liệu Số bit Số Modbus register Đặc điểm
BYTE 8 bit — Dữ liệu 8 bit
WORD / UINT16 16 bit 1 Số nguyên không dấu
INT16 16 bit 1 Số nguyên có dấu
DWORD / UINT32 32 bit 2 Số nguyên 32 bit không dấu
DINT / INT32 32 bit 2 Số nguyên 32 bit có dấu
FLOAT / REAL 32 bit 2 Số thực IEEE-754

Một Modbus Holding Register có 16 bit, vì vậy:

  • WORD hoặc INT16 sử dụng 1 register
  • DWORD, DINT hoặc FLOAT32 thường sử dụng 2 register

Tại sao cùng một HEX lại có thể cho ra nhiều giá trị?

Một chuỗi bit có thể được diễn giải theo nhiều kiểu dữ liệu khác nhau.

Ví dụ:FFFF HEX

Nếu đọc theo UINT16:FFFF = 65535

Nhưng nếu đọc theo INT16 có dấu:FFFF = -1

Dãy 16 bit hoàn toàn giống nhau. Khác biệt nằm ở cách PLC hoặc phần mềm diễn giải dữ liệu.

Đây là lý do khi đọc thanh ghi Modbus không nên chỉ biết địa chỉ register mà còn phải biết data type của thanh ghi đó.

Ví dụ chuyển HEX sang FLOAT32

Giả sử thiết bị trả về hai thanh ghi tạo thành giá trị:42C80000 HEX

Nếu dữ liệu được định nghĩa là IEEE-754 Float32, kết quả là:

42C80000 HEX = 100.0 FLOAT

Nhưng nếu cùng 32 bit này được đọc dưới dạng UINT32 thì kết quả sẽ hoàn toàn khác.

Vì vậy khi đọc dữ liệu PLC hoặc Modbus cần xác định chính xác thiết bị đang sử dụng:

  • UINT16
  • INT16
  • UINT32
  • INT32
  • FLOAT32

High Word và Low Word trong Modbus

Giá trị 32 bit thường cần hai Modbus register 16 bit.

Ví dụ:42C80000có thể chia thành:

High Word: 42C8
Low Word: 0000

Hai Word này kết hợp lại tạo thành dữ liệu 32 bit.

Tuy nhiên, thứ tự Word và Byte có thể khác nhau giữa các thiết bị.

Một số thiết bị sử dụng:

  • ABCD
  • BADC
  • CDAB
  • DCBA

Vì vậy nếu đọc Float32 nhưng kết quả bất thường, cần kiểm tra thêm Byte Order / Word Order trong tài liệu Modbus của thiết bị.

Khi nào cần chuyển HEX sang BIN?

Chuyển HEX sang BIN đặc biệt hữu ích khi cần phân tích từng bit trong Status Word hoặc Control Word.

Ví dụ:0F HEX

tương ứng:0000 1111 BIN

Nhìn vào Binary có thể biết ngay 4 bit thấp đang ở trạng thái 1.

Cách này thường được sử dụng để kiểm tra:

  • trạng thái Input / Output
  • Alarm
  • Warning
  • Relay
  • Enable / Disable
  • trạng thái hoạt động của thiết bị

Ví dụ chuyển đổi nhanh

HEX FF bằng bao nhiêu DEC?

FF HEX = 255 DEC

và:

FF HEX = 11111111 BIN

HEX 1234 bằng bao nhiêu DEC?

1234 HEX = 4660 DEC

HEX FFFF bằng bao nhiêu?

Nếu đọc theo UINT16:

FFFF HEX = 65535

Nếu đọc theo INT16:

FFFF HEX = -1

42C80000 là bao nhiêu FLOAT?

Nếu sử dụng chuẩn IEEE-754 Float32:

42C80000 HEX = 100.0

Câu hỏi thường gặp

Một Modbus register có bao nhiêu bit?

Một Modbus register có 16 bit, tương đương 2 byte. Vì vậy một giá trị Float32 hoặc DINT 32-bit thường cần hai register liên tiếp.

WORD và INT có giống nhau không?

Cả hai đều có thể sử dụng 16 bit nhưng cách diễn giải khác nhau. WORD hoặc UINT16 thường là số không dấu, trong khi INT16 có thể biểu diễn cả số âm và số dương.

FLOAT32 cần bao nhiêu Modbus register?

FLOAT32 sử dụng 32 bit nên thông thường cần 2 Modbus register 16-bit.

Tại sao đọc Float32 ra giá trị sai?

Nguyên nhân thường gặp là chọn sai kiểu dữ liệu hoặc sai thứ tự Byte/Word. Hãy kiểm tra tài liệu Modbus của thiết bị để xác định Float32 được truyền theo ABCD, BADC, CDAB hay DCBA.

Có cần nhập tiền tố 0x khi nhập HEX không?

0x thường được sử dụng để biểu thị rằng một số đang ở dạng hexadecimal, ví dụ 0xFF. Nếu công cụ đã được chọn chế độ HEX thì chỉ cần nhập giá trị FF.