Tại sao các trình soạn thảo hex được gọi là trình soạn thảo nhị phân?


84

Hex và nhị phân là hai cơ sở khác nhau. Hex, theo cách hiểu của tôi, đơn giản là một phiên bản nhị phân dễ sử dụng và thuận tiện hơn.

Tuy nhiên, tôi thường nghe rằng các trình soạn thảo hex là các trình soạn thảo nhị phân. Nếu bạn tìm kiếm "trình soạn thảo nhị phân" trên Google, bạn sẽ có các trình soạn thảo hex.


3
Hex là đại diện phần nào có thể đọc được của dữ liệu nhị phân.
Salman A

Câu trả lời:


188

Một trình soạn thảo nhị phân chỉnh sửa một tệp như một tệp nhị phân .

Tệp nhị phân - Wikipedia

Một tập tin nhị phân là một tập tin máy tính đó không phải là một tập tin văn bản. Thuật ngữ "tệp nhị phân" thường được sử dụng như một thuật ngữ có nghĩa là "tệp phi văn bản" [và] thường được coi là một chuỗi các byte. ... Các tệp nhị phân thường chứa các byte được dự định sẽ được hiểu là một cái gì đó không phải là ký tự văn bản.

Một trình soạn thảo hex là một loại biên tập nhị phân trong đó dữ liệu được biểu diễn dưới dạng thập lục phân .

Biên tập viên Hex - Wikipedia

Một trình soạn thảo hex (hoặc nhị phân soạn thảo tập tin hoặc biên tập byte ) là một loại chương trình máy tính cho phép thao tác các dữ liệu nhị phân cơ bản đó được hiểu là một tập tin máy tính. Tên 'hex' xuất phát từ 'hexadecimal': một đại diện tiêu chuẩn cho các số có 16 làm cơ sở.


85

Thuật ngữ là khó. Những người khác nhau có tất cả các loại tên khác nhau cho mọi thứ.

Trong trường hợp này, có vẻ như hex trong "trình soạn thảo hex" đề cập đến biểu diễn thông thường có thể đọc được của con người đối với từng giá trị của byte, trong khi nhị phân trong "trình soạn thảo nhị phân" đề cập đến khái niệm rằng bạn thực sự đang chỉnh sửa tệp theo byte lớp (và máy tính lưu trữ byte ở dạng nhị phân), mà không cần xem xét mã hóa văn bản cấp cao hơn và tương tự. Hãy nhớ lại rằng các tệp không thể biểu diễn ở dạng văn bản cấp cao hơn được gọi là "tệp nhị phân" hoặc "tệp nhị phân", vì lý do tương tự.

Không phải là kỹ thuật không chính xác; họ chỉ đến vấn đề đặt tên từ các góc độ khác nhau. Tuy nhiên, trên một ghi chú cá nhân, tôi có xu hướng đồng ý rằng "trình soạn thảo nhị phân" gây nhầm lẫn về số dư.


58

Hiển thị trình soạn thảo nhị phân (ở dạng nhị phân)

00000000 | 11111011 11111011 11111011 11111011 11110101 11111011 11111011 11111011
00001000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00010000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00011000 | 11110101 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00100000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00101000 | 11111011 11111011 11101111 11111011 11111011 11111011 11111011 11111011
00110000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
00111000 | 11111011 11111011 11111011 11101111 11111011 11111011 11111011 11111011
01000000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01001000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01010000 | 11101111 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01011000 | 11101111 11111011 11111011 11111011 11111011 11111011 11111011 11111011
01100000 | 11111011 11111011 11111011 11111011 11111011 11101111 11111011 11111011
01101000 | 11111011 11111011 11111011 11111011 11111011 11111011 11111011 11111011

Hiển thị trình soạn thảo nhị phân (theo hệ thập lục phân)

00 | fb fb fb fb f5 fb fb fb fb fb fb fb fb fb fb fb
10 | fb fb fb fb fb fb fb fb f5 fb fb fb fb fb fb fb 
20 | fb fb fb fb fb fb fb fb fb fb ef fb fb fb fb fb 
30 | fb fb fb fb fb fb fb fb fb fb fb ef fb fb fb fb 
40 | fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb 
50 | ef fb fb fb fb fb fb fb ef fb fb fb fb fb fb fb 
60 | fb fb fb fb fb ef fb fb fb fb fb fb fb fb fb fb

Đúng là một trình soạn thảo nhị phân sẽ cho phép bạn xử lý các byte ở dạng nhị phân, nhưng như bạn có thể thấy cơ sở 2 quá nhỏ để đưa ra các số nhỏ gọn.

Nhị phân như nguyên, không căn hai

Nói chung, sau đó " nhị phân " trong trình soạn thảo nhị phân không đề cập đến cơ sở hai, nó thực sự là từ trái nghĩa của " trình soạn thảo văn bản ".
Sự khác biệt là các trình soạn thảo văn bản được thiết kế để hiển thị văn bản, do đó, không in các ký tự, dòng mới, ký tự điều khiển, đơn vị mã utf-8 không hợp lệ, v.v. không bắt buộc phải xử lý một cách an toàn.
Hành động đơn thuần là mở tệp và lưu ngay lập tức có thể thay đổi tệp (do chuyển đổi nội bộ của trình soạn thảo, lỗi).

Mặt khác, các trình soạn thảo nhị phân không cố gắng cung cấp dữ liệu theo bất kỳ ngữ nghĩa nào và để người dùng xử lý nó một cách an toàn dưới dạng luồng byte / bit / từ.

Biên tập thập lục phân

Trình chỉnh sửa nhị phân hoàn hảo sẽ biết mọi định dạng nhị phân có thể và cho phép bạn chỉnh sửa nó, nhưng vì mọi người đều có thể tạo định dạng nhị phân của riêng mình và vì chúng thay đổi rất thường xuyên, nên cố gắng hỗ trợ tất cả các định dạng.
Điều tốt nhất mà một trình soạn thảo có thể làm là hiển thị các byte và do các thuộc tính đã được thảo luận của cơ sở 16, các số thập lục phân rất tiện dụng!

Ngoài ra, một người dùng có kinh nghiệm có thể dịch bin thành hex khi họ đọc nó.
Việc thiết lập / lấy một bit ra khỏi một byte được viết bằng hex thực sự hoàn toàn không tốn nhiều công sức hơn một byte được viết bằng bin.
Thành thật mà nói tôi thấy hex dễ đọc hơn nhị phân để đọc.


1
Ví dụ đẹp cho thấy sự khác biệt. Trên thực tế nhìn thấy chúng cạnh nhau làm cho giao diện hex đẹp hơn rất nhiều
DrZoo

1
@DrZoo Trừ khi bạn đang xử lý các trường bit, trong trường hợp đó, biểu diễn nhị phân đẹp hơn nhiều! vi.wikipedia.org/wiki/Bit_field .
misha256

6
misha256: thành thật mà nói, khi tôi nhìn vào hex - tôi thấy nhị phân. Tôi đọc "f" nhưng não tôi ngay lập tức nói "1111". Nó giống như xem ma trận ở dạng nhỏ gọn. :)
tdrury

4
+1 để nhấn mạnh "Nhị phân là thô, không phải cơ sở hai"
Kelvin

5
@tdrury điểm tốt, tôi cho rằng sau một thời gian bạn mới bắt đầu "thấy" những gì bạn cần xem bất kể nó thể hiện như thế nào. Haha, vâng, Ma trận! Nhắc nhở tôi về một anh chàng tôi đã đi học với người vui vẻ mã hóa ngôn ngữ máy theo dạng thập phân hoặc thập phân và có thể chuyển đổi tự do giữa hai người. Anh ấy biết tất cả các mã op và thấy các trường bit và các cấu trúc dữ liệu đóng gói khác giống như đó là ngôn ngữ đầu tiên của anh ấy. Đó là những ngày thứ 64 trong tâm trí bạn (những ngày đơn giản hơn nhiều), nhưng vẫn là một tài năng ấn tượng.
misha256

15

Tại sao các trình soạn thảo hex được gọi là trình soạn thảo nhị phân?

Tóm lược:

Trình soạn thảo Hex được sử dụng để chỉnh sửa trực tiếp tệp nhị phân bằng cách hiển thị nội dung nhị phân ở định dạng thập lục phân và cho phép các số thập lục phân này được thay đổi.

Ghi chú:

  • Hex Editors cho phép chỉnh sửa nội dung dữ liệu thô của một tệp, thay vì các chương trình khác cố gắng diễn giải dữ liệu.

  • Hex Editors cũng được gọi là Biên tập nhị phân hoặc Biên tập viên Byte.

  • Gọi chúng là Trình chỉnh sửa nhị phân hoặc Trình chỉnh sửa Byte không thực sự chính xác vì các trình soạn thảo đang thay đổi số thập lục phân và không phải là số nhị phân hoặc byte (tất nhiên số nhị phân và byte cơ bản sẽ thay đổi nếu tệp được lưu)

Tại sao chúng ta chỉnh sửa nhị phân sử dụng thập lục phân?

Dễ dàng hơn để xem trực tiếp hoặc chỉnh sửa / sửa đổi các tệp nhị phân bằng cách hiển thị dữ liệu ở dạng thập lục phân và thay đổi các giá trị thập lục phân.

  • Một cách thuận tiện để biểu diễn số nhị phân là sử dụng thập lục phân.

  • Trong lịch sử, các máy tính được lập trình bằng ngôn ngữ lắp ráp, trong đó mã được viết bằng cách sử dụng các lệnh của bộ xử lý và các câu lệnh meta (được biết đến như là các lệnh, hướng dẫn giả và giả), các nhận xét và dữ liệu.

    • Mã được dịch thành nhị phân bằng cách sử dụng một trình biên dịch. Mã nhị phân sau đó có thể được tải vào một quy trình và được thực thi.

    • Không có mã nguồn, việc sửa đổi chương trình trực tiếp sẽ dễ dàng hơn bằng cách sử dụng trình soạn thảo hiển thị chương trình theo hệ thập lục phân thay vì nhị phân.

  • Mã nhị phân dễ đọc hơn bởi con người khi được chuyển đổi thành thập lục phân.

    Ví dụ, cặp số nào dễ ghi nhớ hoặc đọc ra cho người khác?

    10110000 01100001
    

    Hoặc là

    B0 61
    
  • Mỗi chữ số thập lục phân đại diện cho bốn chữ số nhị phân (bit). Một chữ số thập lục phân đại diện cho một nibble, là một nửa của octet hoặc byte (8 bit).

    Ví dụ: các giá trị byte có thể nằm trong khoảng từ 0 đến 255 (thập phân), nhưng có thể được biểu diễn thuận tiện hơn dưới dạng hai chữ số thập lục phân trong phạm vi 00 đến FF.

  • Hệ thập lục phân cũng thường được sử dụng để thể hiện các địa chỉ bộ nhớ máy tính.


3
Cũng lưu ý rằng, trong khi Base 64 có vẻ dễ nhớ hơn, chúng tôi vẫn sử dụng Hex vì nó có đặc tính tốt là ánh xạ 2 ký tự ⇒ 1 byte.
PythonNut

9

Theo một số ngôn ngữ lập trình và quy ước hệ điều hành, có hai loại tệp:

  • các tệp văn bản được tạo thành từ một bộ các dòng văn bản, mỗi dòng được tạo thành từ một bộ các ký tự có thể in được (bao gồm một số ký tự điều khiển) và được kết thúc ở cuối dòng
  • các tệp nhị phân chứa một bộ byte tùy ý bao gồm byte null bị cấm trong tệp văn bản.

Trình chỉnh sửa văn bản có thể mở tệp văn bản trong khi trình chỉnh sửa nhị phân không có hạn chế đối với loại tệp mà chúng xử lý.

Các trình soạn thảo nhị phân thực tế thường đại diện và cho phép nhập dữ liệu theo hệ thập lục phân chỉ là sự tiện lợi (chúng thường hiển thị và cho phép thay thế các ký tự ascii), chỉ hiển thị dữ liệu ở dạng nhị phân thuần sẽ làm cho dữ liệu dễ đọc hơn.

Một trình soạn thảo nhị phân phổ biến được đặt tên là HexEdit .

nhập mô tả hình ảnh ở đây

Nó tự coi mình là cả trình soạn thảo nhị phân và trình soạn thảo hex:

nhập mô tả hình ảnh ở đây

Thậm chí còn có một tùy chọn không hiển thị dữ liệu ở dạng hex mà chỉ có văn bản

nhập mô tả hình ảnh ở đây


5

Các tập tin trên phần lớn, nếu tất cả, của các máy tính ngày nay là các byte 8 bit . Đó thường là sự trừu tượng mà người ta đang làm việc khi trực tiếp chỉnh sửa một tệp.

Tất nhiên, có dịp thực sự chỉnh sửa các bit dữ liệu riêng lẻ, nhưng không thường xuyên. Các thao tác cấp bit thông thường như cài đặt bit 7 rất dễ thực hiện với hex - 1000 0000 base2 = 80 base16 , vì vậy nếu giá trị hex dưới 80 base2 bit 7 thì rõ ràng và thêm 8 base16 sẽ đặt nó.

Các lý do khác khiến hex liên quan nhiều hơn đến loại hoạt động này:

  • Các giá trị hex dễ nhận biết hơn khi quét trực quan các giá trị đã biết. Ví dụ: 20 base16 = 32 là không gian ASCII, nhưng cùng một giá trị 0010 0000 base2 không dễ nhận ra như vậy trong một loạt các giá trị bị đổ khác.

  • Các hệ thống cũ mà bạn thực sự cần sử dụng thường xuyên có thể có không gian màn hình hạn chế (ví dụ 40 cột). Màn hình ROM Apple IIe là một ví dụ tuyệt vời, nó có thể chuyển bộ nhớ trong hex sang video tích hợp 40 cột và mở rộng giá trị thành nhị phân trên màn hình 80x24 sẽ nhanh chóng khiến bạn hết phòng. Đối với các hệ thống cũ này, việc viết các thói quen để chuyển ASCII đã nhập trở lại các giá trị phù hợp cũng dễ dàng hơn. Quan trọng trong đó 4K RAM được coi là rất nhiều bộ nhớ và các hệ thống có thể chỉ có nhiều ROM.

  • Từ "hex" nghe hay hơn, ngắn hơn và dễ gõ hơn.


5

Khi mọi người đang sử dụng hex, họ thường suy nghĩ nhị phân và sử dụng hex như một ký hiệu tốc ký.

Mười sáu là một sức mạnh của 2. Tám cũng là một sức mạnh của hai. Vì vậy, 16 và 8 đã được sử dụng cho ký hiệu viết tắt của nhị phân. Chuyển đổi thủ công giữa nhị phân và cơ sở của một số sức mạnh của hai là dễ dàng. Chỉ cần nhóm các bit lại với nhau theo kích thước được chỉ định bởi cơ sở đích và sau đó sử dụng chữ số tương ứng.

Cơ sở 8, bát phân, là phổ biến cho nhiều máy tính ban đầu, đó là lý do tại sao Unix có odlệnh kết xuất bát phân. Mỗi chữ số bát phân đại diện cho 3 bit cùng một lúc. Nhưng nó bất tiện cho các máy dựa trên byte 8 bit.

Hệ thập lục phân, hex cho ngắn, cơ sở 16, đại diện cho 4 bit trên mỗi chữ số. Đây là một đại diện được sử dụng phổ biến hơn những ngày này.


3

Điều này đề cập đến cách máy tính lưu trữ thông tin.

Ở cấp độ cơ bản, máy tính sử dụng 01để biểu diễn dữ liệu, chúng được gọi là bit. Tám bit được nhóm lại với nhau là một byte. Hệ thập lục phân là cơ sở 16 có nghĩa là nó có 16 ký tự ( 0-9, A-F). Để lưu trữ một ký tự, phải mất 8 bit hoặc 1 byte.

Vì vậy, một số thập lục phân 13( 19số thập phân) giống như 0001 0011trong số nhị phân. Nó dễ đọc hex hơn là nhị phân.


2

Những biên tập viên nhị phân đầu tiên mà tôi biết cũng là những người tháo gỡ. Có nghĩa là, khả năng chỉnh sửa là sản phẩm phụ cho việc phân tách và vá tệp nhị phân thực thi.

Một ví dụ điển hình của ứng dụng này là Hiew.

Mã được lắp ráp (hướng dẫn trình biên dịch mã) thường được biểu diễn dưới dạng các chuỗi thập lục phân. Tôi nghĩ rằng, đây là nơi phát sinh sự nhầm lẫn hiện đại. Mọi người chỉ không biết, những gì họ đang giải quyết.


2

Bất kỳ tệp nào được biên dịch, có thể chạy được (ví dụ như somefile.exe, chẳng hạn như trên Windows) đôi khi được gọi là "nhị phân", vì nó được biên dịch thành mã cấp độ máy chính xác ở cấp nhị phân do bộ xử lý thực thi trực tiếp.

Vì vậy, bạn đang chỉnh sửa một nhị phân. Nó chỉ tình cờ được hiển thị dưới dạng hex vì hex rất hữu ích cho con người.


Có, nhưng nhiều tệp dữ liệu là nhị phân là tốt. Họ tiết kiệm không gian và dịch khi được đọc bởi ứng dụng thích hợp. Ngoài ra, ngay cả các tệp văn bản thường được mã hóa hoặc nén làm cho chúng thành các tệp nhị phân.
Joe

1

Tôi sẽ trả lời câu hỏi của bạn theo nghĩa đen.

Đầu tiên, một chút làm rõ. Tất nhiên, ý bạn là một trình soạn thảo thập lục phân. Hex có nghĩa là 6thập phân có nghĩa là 10 , vì vậy hexadecimal có nghĩa là 16 . Bi có nghĩa là 2 . Như bạn đã nói, đây là hai cơ sở khác nhau, cơ sở 16 và cơ sở 2, có nghĩa là phải mất 16 phần tử giữ chỗ để xác định số thập lục phân và chỉ 2 phần tử để xác định số nhị phân.

Bạn đã nói rằng,

If you actually search for "binary editor" on Google, you get hex editors.

Và bây giờ cho câu hỏi của bạn,

Why is that? 

Đây là phần nghĩa đen. Google trả về những gì hầu hết mọi người nghĩ là kết quả khả quan của các tìm kiếm của họ. Các thuật toán học máy của họ liên kết các chuỗi "thập lục phân" và "hex" với "nhị phân" trong ngữ cảnh của chuỗi "trình soạn thảo". Vì hầu hết người dùng đều hài lòng với "hex" "Editor" sau khi họ tìm kiếm "binary" "Editor", đó là những gì chúng tôi nhận được. Nó không có ý nghĩa khác.

What is the connection?

Theo nghĩa đen, không có gì kể từ khi Google trả về không có ý nghĩa. Google không biết sự khác biệt giữa nhị phân và thập lục phân, nó chỉ có thể lập bảng về cách mọi người sử dụng công cụ tìm kiếm của họ.

Nếu bạn đang yêu cầu kết nối thực giữa thập lục phân và nhị phân, thì hãy quay lại làm rõ của tôi ở trên, một phần tử thập lục phân mã hóa 16 khả năng hoặc 4 bit, nhưng phần tử nhị phân mã hóa 2 khả năng hoặc 1 bit. Để mã hóa 8 bit thông tin trong một byte, chúng ta cần 2 phần tử thập lục phân hoặc 8 phần tử nhị phân. Vì vậy, bạn có thể thấy rằng các trình soạn thảo nhị phân hoặc thập lục phân có thể được sử dụng thay thế cho nhau vì chúng đại diện cho cùng một dữ liệu, chỉ trong các chế độ xem khác nhau.


1

Chúng được gọi là "nhị phân" vì chúng cho phép bạn thay đổi các bit riêng lẻ.

Giao diện người dùng thường hoạt động ở dạng hex theo mặc định vì tiện lợi hơn - ví dụ: ffffe0007d13e650 chiếm ít không gian trên màn hình hơn 1111111111111111111000000000000001111101000100111110011001010000. .

Nhưng hầu hết trong số họ sẽ chuyển sang hiển thị cho bạn các bit nhị phân nếu bạn thực sự muốn chúng.

(Tại sao chúng ta lái xe trên công viên nhưng lại đỗ xe trên đường? Đó chỉ là lời nói. Tiếng Anh thường lạ.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.