Decode là gì

Làm rõ những định nghĩa cơ bản

Chắc rằng toàn bộ đông đảo bạn phần đa biết về vấn đề này ở một cường độ nào đó, dẫu vậy không hiểu biết nhiều sao những kỹ năng đó lại bị mất đi trong số cuộc tranh biện về vnạp năng lượng phiên bản, buộc phải đầu tiên hãy nói lại một chút: Máy tính bắt buộc như thế nào tàng trữ được “chữ”, “số”, “ảnh”, hay bất cứ đồ vật gì khác. Thứ tốt nhất mà lại nó có thể lưu giữ được cùng làm việc cùng chính là bit. Một bit chỉ có thể gồm 2 giá chỉ trị: tất cả hoặc không, đúng hoặc không nên, 1 hoặc 0, bạn muốn Gọi Theo phong cách làm sao cũng được. Vì máy vi tính hoạt động bằng điện, một bit thực ra rất có thể được miêu tả bằng điện áp, xung bây giờ hoặc tâm lý năng lượng điện của mạch flip-flop. Đối cùng với bé fan, bit hay được biểu thị bởi 1 với 0 cho nên hãy coi đấy là quy ước trong suốt nội dung bài viết này.

Bạn đang xem: Decode là gì

Để dùng bit để biểu thị mang lại bất cứ đồ vật gì, chúng ta đề xuất những phép tắc. Chúng ta cần được chuyển đổi một chuỗi các bit thành trang bị gì đấy nhỏng chữ, số và ảnh bằng cách sử dụng một encoding scheme (lược vật dụng mã hóa), hoặc hotline tắt là encoding. Nhỏng thay này:

01100010 01101001 01110100 01110011b i t sTrong encoding này, 01100010 đại diện thay mặt mang đến chữ "b", 01101001 mang đến chữ "i", 01110100 mang đến chữ "t" với 01110011 cho chữ "s". Một chuỗi những bit cố định đang thay mặt đại diện cho 1 chữ với một chữ đang đại diện thay mặt cho một chuỗi các bit nhất mực. Nếu bạn tất cả tâm trí tốt để lưu giữ được chuỗi bit đến 26 chữ thì chúng ta có thể hiểu bit như đọc sách vậy.

Encoding scheme bên trên được Hotline là ASCII. Một chuỗi các tiên phong hàng đầu và 0 được chia nhỏ ra thành nhiều phần, mỗi phần 8 bit (hoặc 1 byte). ASCII mức sử dụng một bảng để dịch trường đoản cú byte quý phái chữ cái mà lại con tín đồ có thể phát âm được. Dưới đây là một phần nhỏ tuổi của bảng đó:

bitscharacter
01000001A
01000010B
01000011C
01000100D
01000101E
01000110F

Có tổng số 95 ký tự rất có thể gọi được biện pháp trong bảng ASCII, bao gồm chữ từ bỏ A mang lại Z sống tâm lý thường cùng in hoa, số từ 0 cho 9, một số trong những vết chấm câu cùng các cam kết tự nhỏng đồng đô la, lốt chnóng than cùng một vài sản phẩm khác. Nó cũng bao hàm 33 quý hiếm đến một số trong những lắp thêm như vệt giải pháp, vết xuống cái, tab, backspace,... Những thiết bị này tất nhiên quan trọng in ra được, dẫu vậy cũng vẫn hữu hình sinh hoạt một vài dạng và có ích trực tiếp với nhỏ fan. Một vài quý giá thì chỉ hữu dụng cùng với laptop, nhỏng mã để ghi lại bắt đầu cùng dứt của văn phiên bản. Tộng cùng gồm 128 ký tự được khái niệm trong encoding ASCII, kia là 1 trong số lượng đẹp mắt (cùng với những người dân rất gần gũi cùng với sản phẩm công nghệ tính), chính vì nó thực hiện không còn tất cả những phối kết hợp rất có thể của 7 bit (0000000 cho tới 1111111).

Và giờ thì chúng ta đang gồm phương pháp để bộc lộ văn bạn dạng chỉ bằng việc thực hiện 1 với 0:

01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100 "Hello World"Thuật ngữ quan lại trọngĐể encode một máy nào đó bằng ASCII, tuân theo bảng từ bỏ yêu cầu qua trái, sửa chữa những chữ bằng những bit. Để decode một chuỗi những bit thành những ký tự rất có thể gọi được, làm theo bảng trường đoản cú trái qua phải, thay thế sửa chữa các bit bằng văn bản.

Encode tức thị thực hiện một lắp thêm nào đó để biểu đạt cho 1 đồ vật không giống. encoding là một trong tập vừa lòng những nguyên tắc để tiến hành việc chuyển đổi kia.

Một số thuật ngữ khác đề nghị được thiết kế rõ trong ngữ chình họa này:

character set, charset

Tập hợp những ký kết trường đoản cú có thể được encode. "Mã hóa ASCII bao gồm 1 cỗ cam kết từ có 128 ký kết từ." Về cơ bản thì đồng nghĩa tương quan cùng với "encoding".

code page

Một "trang" các mã nhằm liên kết các ký kết trường đoản cú với một chuỗi các bit khớp ứng. Cũng rất có thể phát âm là 1 trong "bảng". Về cơ bản thì đồng nghĩa với "encoding".

string

Một string là một số trong những các thành phần được xâu lại cùng nhau. Một chuỗi bit là 1 trong những loạt những bit, nhỏng 01010011. Một chuỗi cam kết từ là một trong loạt các ký kết từ bỏ, như vậy này. Đồng nghĩa cùng với "sequence".

Binary, Octal, Decimal, Hex

Có tương đối nhiều phương pháp để viết một vài. 10011111 trong những hệ nhị phân là 237 vào hệ bát phân, 159 trong hệ thập phân và 9F vào hệ thập lục phân. Chúng số đông biểu đạt một quý hiếm, nhưng số thập lục phân lại ngắn gọn rộng cùng đọc dễ hơn đối với số nhị phân. Tuy vậy tôi đang cần sử dụng nhị phân nhìn trong suốt nội dung bài viết này để gia công vấn đề trsinh hoạt yêu cầu dễ nắm bắt hơn tương tự như thải trừ bớt được một tờ trừu tượng. Đừng lo nếu như bạn thấy ở chỗ nào kia các mã cam kết từ lại được viết nghỉ ngơi hệ không giống nhé, bọn chúng như nhau cả thôi.

Excusez-Moi?

Sau Khi đã nắm rõ phần lớn ý bên trên rồi thì cùng thụ thiệt cùng nhau nào: 95 ký kết từ là vượt ít khi bọn họ nói tới các ngôn ngữ. Nó hoàn toàn có thể áp dụng mang đến tiếng Anh cơ bản, mà lại đang cố kỉnh như thế nào trường hợp chúng ta mong mỏi viết một risqué letter (thỏng báo đen đủi ro) bằng giờ Pháp? Straßen­übergangs­änderungs­gesetz (biện pháp đường bộ) trong tiếng Đức? Một lời mời mang đến tiệc smörgåsbord (tiệc đứng) bằng giờ đồng hồ Thụy Điển? Ờm, các bạn thiết yếu. Không thể bằng ASCII. Không bao gồm một chỉ dẫn làm sao mang đến Việc biểu hiện những chữ nlỗi é, ß, ü, ä, ö or å vào ASCII, bắt buộc chúng ta cần yếu dùng nó được.

Xem thêm: Hướng Dẫn Cách Tạo Usb Boot Với Dlc Boot 2021 Mới Nhất Cực Nhanh 1 Click

"Nhưng chú ý xem," dân châu Âu nói, "vào một cái laptop thường dùng với cùng 1 byte bởi 8 bit, mã hóa ASCII sẽ làm giá tiền phạm hẳn 1 bit khi luôn set giá trị của nó là 0! Chúng ta hoàn toàn có thể sử dụng bit này để nhét thêm tận 128 quý hiếm vào tấm bảng đó!" Và bọn họ sẽ làm điều đó. Nhưng bao gồm cả cố kỉnh, có khá nhiều rộng 128 phương pháp để đặt lốt cho một nguan tâm. Chúng ta quan trọng làm sao gửi không còn tất cả các biến đổi thể của chữ cái được sử dụng trong các ngôn ngữ của toàn Châu Âu vào vào cùng một bảng với tối nhiều 256 quý giá được. Và kế tiếp nhân loại chìm ngập trong một biển các encoding, các tiêu chuẩn chỉnh, các tiêu chuẩn thực tiễn cùng thậm chí là là... nửa tiêu chuẩn chỉnh để cần sử dụng cho những bộ ký kết từ bỏ khác nhau. Một bạn như thế nào đó rất cần được viết một vnạp năng lượng bạn dạng về tiếng Thụy Điển bởi giờ đồng hồ Séc, tìm đâu thấy encoding nào áp dụng cho cả 2 ngữ điệu này cần đành tự chế ra một chiếc. Và cthị xã đó diễn ra hàng ngàn lần.

Và cũng hãy nhờ rằng tiếng Nga, tiếng Ấn Độ, giờ Ả Rập, giờ đồng hồ Do Thái, giờ đồng hồ Hàn và hàng chục ngàn ngữ điệu không giống đang rất được dùng bên trên trái đất. Chưa nhắc những ngôn từ đã mất được sử dụng nữa. Một khi chúng ta đã giải được bài bác toán có tác dụng cụ như thế nào nhằm viết những ngôn ngữ trong và một văn bạn dạng với các vật dụng tiếng trên, hãy thử thách phiên bản thân bằng giờ đồng hồ Trung. Hoặc giờ Nhật. Cả 2 ngôn từ này cất cả chục nghìn cam kết tự. Quý khách hàng tất cả tối nhiều 256 giá trị trong một byte chứa 8 bit. Triển!

Mã hóa đa byte (Multi-Byte Encodings)

Để tạo thành một bảng links các cam kết từ với chữ cái cho 1 ngôn ngữ có khá nhiều rộng 256 cam kết từ, một byte dễ dàng và đơn giản là không được. Với 2 byte (16 bit), chúng ta cũng có thể mã hóa tới 65,536 ký kết tự khác biệt. BIG-5 là 1 trong những encoding thực hiện từ thời điểm cách đó. Thay bởi tách bóc một chuỗi các bit thành bloông chồng 8, nó tách bóc thành bloông xã 16 và bao gồm một chiếc bảng đẩy đà (ý tôi là, KHỔNG LỒ) quy định vấn đề ký kết trường đoản cú như thế nào thì link thuộc chuỗi bit làm sao. BIG-5 sinh sống thể dễ dàng duy nhất đã giải pháp xử lý phần lớn các cam kết tự của giờ Trung phồn thể. GB18030 là 1 trong encoding khác cũng đều có biện pháp tiếp cận tựa như, nhưng mà nó bao hàm cả giờ đồng hồ Trung giản thể cùng phồn thể luôn luôn. Và trước khi chúng ta hỏi, thì đúng vậy, có cả những encoding khác chỉ giành cho giờ Trung giản thể thôi. Tôi chỉ hy vọng sử dụng 1 encoding thôi nhưng cũng trở ngại nỗ lực sao?

Dưới đó là 1 phần nhỏ dại của bảng mã hóa GB18030:

bitscharacter
10000001 01000000
10000001 01000001
10000001 01000010
10000001 01000011
10000001 01000100

GB18030 cách xử trí một lượng béo những ký kết trường đoản cú (bao gồm cả đa số các ký kết trường đoản cú La tinh), mặc dù ở đầu cuối thì nó cũng chỉ là 1 định hình mã hóa chăm biệt trong mặt hàng hà sa số những mẫu không giống thôi.

Sự hồi hộp có thương hiệu Unicode

Cuối cùng thì cũng có bạn Chịu đựng không còn nổi cùng vẫn đứng dậy tạo ra một chuẩn chỉnh mã hóa nhằm phù hợp độc nhất tất cả các chuẩn chỉnh khác. Chuẩn này được Điện thoại tư vấn là Unicode. Về cơ phiên bản nó quan niệm một bảng to cực đại với cùng một,114,112 các code point hoàn toàn có thể được sử dụng mang lại đều nhiều loại chữ cái cùng hình tượng. Nó quá đủ nhằm mã hóa cục bộ giờ châu Âu, Trung Đông, Viễn Đông, miền Nam, miền Bắc, miền Tây, lịch sử từ trước và cả các ngôn từ tương lai nhưng mà nhỏ bạn không suy nghĩ ra. Sử dụng Unicode, chúng ta cũng có thể biên soạn văn phiên bản chứa gần như mọi ngữ điệu bằng hồ hết ký tự mà bạn có thể gõ ra. Điều này Hoặc là bất khả thi hoặc hết sức cực kỳ khó khăn nhằm thực hiện trước khi Unicode thành lập và hoạt động. Thậm chí còn có một mục không bằng lòng dành cho giờ đồng hồ Klingon (Star Trek) trong Unicode. Quý Khách thấy đó, Unicode béo mang đến nỗi nó cũng cho phép sử dụng vào mục tiêu cá thể luôn luôn.

*

Vậy thì Unicode sử dụng từng nào bit để mã hóa tất cả những ký kết từ đó? 0. Bởi do Unicode không phải một nhiều loại mã hóa (encoding).

Bối rối? đa phần người dường như như vậy. Đầu tiên, Unicode tư tưởng ra một bảng cất các code point cho những ký kết từ bỏ. Nghe có vẻ như nguy hại vậy thôi, nó cũng như là nói "65 thay mặt đại diện mang đến A, 66 đến B với 9,731 mang đến ☃" (thật đấy). Làm cố gắng nào mà lại đông đảo code point này được mã trở thành bit thì lại là một trong mẩu chuyện khác. Để chứa 1,114,112 quý giá khác biệt, 2 byte là cảm thấy không được. 3 byte thì đầy đủ, tuy thế chả ai cần sử dụng 3 byte cả, bắt buộc ở đầu cuối 4 byte đã có chọn. Nhưng, trừ khi chúng ta sử dụng giờ đồng hồ Trung hoặc những thiết bị tiếng không giống với một lượng to các ký kết trường đoản cú cơ mà phải các bit để mã hóa, các bạn sẽ chẳng bao giờ sử dụng không còn phần nhiều 4 byte đó cả. Nếu chữ "A" luôn luôn được mã biến thành 00000000 00000000 00000000 01000001, "B" thì thành 00000000 00000000 00000000 01000010,.. những văn bạn dạng sẽ có kích cỡ tăng thêm 4 lần so với kích thước thực.

Để về tối ưu hóa vấn đề này, có rất nhiều cách để mã hóa code point thành bit. UTF-32 là một encoding gồm chức năng mã hóa phần nhiều code point sử dụng 32 bit. Nghĩa là, 4 byte bên trên một cam kết từ. Nó khôn xiết đơn giản dễ dàng, cơ mà thường xuyên thì chỉ chiếm kích thước quá to. UTF-16 và UTF-8 là 2 các loại mã hóa đa chiều lâu năm. Nếu một cam kết từ có thể được mã hóa bởi 1 byte (bởi vì code point của nó là một vài hết sức nhỏ), UTF-8 sẽ mã hóa nó bởi 1 byte. Nếu ký trường đoản cú buộc phải cho tới 2 byte, nó sẽ mã hóa bởi 2 byte, vân vân. Lúc lời giải (decode), byte trước tiên trong chuỗi sẽ tiến hành sử dụng nhằm xác định số byte cấu trúc thành cam kết trường đoản cú, nuốm thể:

Chuỗi bắt đầu bằng mẫu bit "0" (0x00-0x7f) => chuỗi dài 1 byte.Chuỗi bắt đầu bằng chủng loại bit "110" (0xc0-0xdf) => chuỗi dài 2 byte.Chuỗi bước đầu bởi mẫu mã bit "1110" (0xe0-0xef) => chuỗi dài 3 byte.Chuỗi bắt đầu bởi mẫu mã bit "11110" (0xf0-0xf7) => chuỗi nhiều năm 4 byte.

Việc thực hiện bit có trọng số cao nhất (MSB) có tác dụng biểu hiện thông tin độ dài chuỗi rất có thể góp sút hao tốn bộ nhớ lưu trữ, nhưng vẫn đang tốn kém nhẹm trường hợp được dùng thừa liên tiếp. UTF-16 thì cân bằng rộng, cần sử dụng tối thiểu 2 byte, sẽ tăng lên tới 4 byte giả dụ buộc phải.

*

Và chính là toàn bộ về Unicode. Unicode là 1 trong bảng phệ cùng với mục tiêu link các ký kết tự cùng với các số và những các loại mã hoá UTF khác biệt thì chỉ định và hướng dẫn phương pháp mà các số này được mã hoá thành bit. Về cơ phiên bản, Unicode cũng chỉ là 1 trong các encoding scheme cùng không có gì quan trọng về nó bên cạnh Việc nó nỗ lực nhằm cách xử lý đầy đủ sản phẩm trong lúc vẫn hoạt động một bí quyết kết quả cơ mà thôi. Và đó là 1 điều tốt nhất.™

Code Points

Các ký tự được miêu tả trải qua "code point" của nó. Code point được viết dưới hệ thập lục phân (để làm mang đến nó ngắn thêm hơn), được ban đầu bởi "U+" (không tồn tại chân thành và ý nghĩa gì không tính Việc ám chỉ đây là một code point của Unicode). Ví dụ, ký tự Ḁ có code point là U+1E00. Theo cách nói khác, nó là ký trường đoản cú số 7680 của bảng Unicode. Tên call xác định của nó là "LATIN CAPITAL LETTER A WITH RING BELOW" (Chữ la tinch viết hoa A với vòng tròn nghỉ ngơi dưới).

*

Dài vượt, hổ thẹn đọc

Một chút cầm tắt các ý trên: Mọi ký từ có thể được mã hoá thành các chuỗi bit không giống nhau với bất chđọng chuỗi bit nào cũng hoàn toàn có thể biểu lộ các ký trường đoản cú khác nhau, tuỳ ở trong vào các loại mã hoá nào được dùng để viết chúng ra. Lí bởi vì dễ dàng và đơn giản chỉ vì những mã hoá khác biệt thì áp dụng số bit khác nhau với từng ký từ và các quý hiếm không giống nhau thì biểu hiện những cam kết từ không giống nhau.

Xem thêm: Bạn Đã Biết Về Project Charter Là Gì ? Điều Lệ Dự Án (Project Charter) Là Gì

*

(Hết phần 1)

Bài viết được dịch trường đoản cú What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text.


Chuyên mục: Hỏi đáp công nghệ