tools / hex
hex/
Chuyển văn bản sang hex và ngược lại. Chọn bảng mã UTF-8, GBK, UTF-16 và nhiều loại khác; kết quả có thể thêm dấu phân cách, viết hoa và tiền tố 0x hoặc \x.
Văn bản
hex
Câu hỏi thường gặp
Một chữ Hán đổi sang hex là bao nhiêu byte, vì sao kết quả khác với công cụ khác
Tùy bảng mã bạn chọn. Với UTF-8, chữ Hán thông dụng chiếm 3 byte, ví dụ 中 là e4 b8 ad; với GBK và GB2312 chiếm 2 byte, 中 là d6 d0; emoji chiếm 4 byte trong UTF-8. Chữ cái tiếng Anh và chữ số chiếm 1 byte ở cả UTF-8 lẫn GBK nên kết quả giống nhau. Khi kết quả không khớp với công cụ khác, hãy kiểm tra công cụ đó dùng bảng mã nào; trang này mặc định là UTF-8.
Đổi hex sang văn bản báo các byte không phải văn bản hợp lệ, hoặc kết quả bị loạn chữ thì phải làm sao
Nghĩa là chuỗi byte này không được mã hóa theo bảng mã đang chọn, hãy thử bảng mã khác. Với nội dung tiếng Trung, thường gặp nhất là UTF-8 và GBK (phần mềm cũ và dữ liệu xuất từ cơ sở dữ liệu hay dùng GBK); hex của UTF-16 thường có nhiều byte 00. Công cụ này không hiển thị các byte không giải mã được thành ký tự loạn, chỉ có ISO-8859-1 là ngoại lệ: mỗi byte đều ứng với một ký tự nên không bao giờ báo lỗi, nhưng chữ Hán sẽ biến thành ký tự loạn. GBK và GB2312 đều dùng bộ giải mã GB18030 có sẵn của trình duyệt, dễ tính hơn Python hay Java, nên chọn GB2312 vẫn giải mã được cả những chữ chỉ có trong GBK. Nếu chuỗi byte vốn không phải văn bản (ảnh, dữ liệu đã mã hóa, giá trị hash) thì chọn bảng mã nào cũng không giải mã ra được.
Đổi hex sang văn bản nhận được những cách viết nào
Chữ hoa hay chữ thường đều được. Các byte có thể cách nhau bằng dấu cách, xuống dòng, tab, dấu hai chấm, dấu phẩy hoặc dấu gạch ngang, hoặc viết liền không cách; mỗi byte có thể bắt đầu bằng 0x hoặc \x, nên 0x48,0x65 và \x48\x65 đều giải mã được ngay. Mỗi đoạn nằm giữa hai dấu phân cách phải có số chữ số chẵn, vì vậy 0x1 phải viết thành 0x01; lẫn vào ký tự nào ngoài 0-9 và a-f cũng báo lỗi, và cả hai loại lỗi đều chỉ ra đó là ký tự thứ mấy. Các cách viết như U+4E2D hay %E4%B8%AD không được nhận; để mã hóa URL, hãy dùng công cụ URL của trang này.
Làm sao để có định dạng như 0x48,0x65 hoặc \x48\x65
Chọn dấu phân cách là ",", tiền tố là "0x" để được 0x48,0x65, dán được vào mảng byte của C hay Java; chọn dấu phân cách là "Không", tiền tố là "\x" để được \x48\x65, là cách viết byte trong chuỗi của Python và C. Tiền tố được thêm vào trước từng byte, nên chọn dấu phân cách "Không" rồi thêm 0x sẽ ra 0x480x65, thường không dùng được. "Viết hoa" chỉ ảnh hưởng đến a-f, chữ x trong 0x vẫn là chữ thường.
Vì sao kết quả UTF-16 bắt đầu bằng feff và khác với công cụ khác
UTF-16 xuất theo cách của Java: bắt đầu bằng FE FF (dấu thứ tự byte, BOM) rồi đến dữ liệu big-endian, nên 中 là fe ff 4e 2d; UTF-16BE không có dấu này là 4e 2d, sao chép rồi bỏ hai byte đầu là được. UTF-32 là big-endian, không có dấu, 中 là 00 00 4e 2d. Khi giải mã, UTF-16 nhận FE FF (big-endian) hoặc FF FE (little-endian) ở đầu, nếu không có dấu thì mặc định là big-endian.
Vì sao nhập chữ Hán với ASCII hoặc ISO-8859-1 lại báo lỗi
ASCII chỉ biểu diễn được ký tự từ 0 đến 127, còn ISO-8859-1 chỉ đến U+00FF (chữ cái Tây Âu có dấu, không có chữ Hán). Ký tự nằm ngoài phạm vi này sẽ báo lỗi kiểu "Không thể mã hóa ký tự "中" bằng ASCII", chứ không âm thầm đổi thành ? như getBytes của Java. GBK và GB2312 cũng vậy: emoji và các chữ hiếm không có trong bảng mã sẽ báo lỗi, đổi sang UTF-8 hoặc GB18030 là chuyển được.
Dấu cách và xuống dòng trong nội dung nhập có được chuyển đổi không
Khi đổi văn bản sang hex thì có. Mọi ký tự trong ô nhập đều được chuyển, kể cả dấu cách và xuống dòng ở đầu và cuối: dấu cách là 20, xuống dòng là 0a. Ô nhập của trình duyệt chuẩn hóa xuống dòng thành \n, nên với văn bản nhiều dòng, xuống dòng là 0a chứ không phải 0d 0a; nếu cần xuống dòng kiểu Windows, hãy tự sửa trong kết quả. Ngược lại, khi đổi hex sang văn bản, khoảng trắng trong hex bị bỏ qua, chỉ có bản thân các byte được tính; 0d 0a trong kết quả cũng chỉ hiển thị thành một lần xuống dòng.
Nội dung tôi nhập có bị tải lên không
Không. Việc chuyển đổi diễn ra trong trình duyệt, không gửi bất kỳ yêu cầu nào và cũng không lưu gì.