Làm cách nào để giải mã bộ đệm trong nodejs?

Nhị phân chỉ đơn giản là một tập hợp hoặc một tập hợp của

const buf1 = Buffer.alloc(10);
9 và
const buf2 = Buffer.from('Hello World!');
0. Mỗi số trong hệ nhị phân, mỗi số 1 và 0 trong tập hợp được gọi là một bit. Máy tính chuyển đổi dữ liệu sang định dạng nhị phân này để lưu trữ và thực hiện các thao tác. Ví dụ, sau đây là năm nhị phân khác nhau

const buf2 = Buffer.from('Hello World!');
0

JavaScript không có dữ liệu loại byte trong API cốt lõi của nó. Để xử lý dữ liệu nhị phân Node. js bao gồm triển khai bộ đệm nhị phân với mô-đun toàn cầu có tên là

const buf2 = Buffer.from('Hello World!');
1

Tạo bộ đệm

Có nhiều cách khác nhau để bạn có thể tạo bộ đệm trong Node. js. Bạn có thể tạo một bộ đệm trống với kích thước 10 byte

const buf1 = Buffer.alloc(10);

Từ các chuỗi được mã hóa UTF-8, việc tạo ra như thế này

const buf2 = Buffer.from('Hello World!');

Có các mã hóa được chấp nhận khác nhau khi tạo Bộ đệm

  • ascii
  • utf-8
  • cơ sở64
  • latin1
  • nhị phân
  • lục giác

Có ba chức năng riêng biệt được phân bổ trong API bộ đệm để sử dụng và tạo bộ đệm mới. Trong các ví dụ trên, chúng ta đã thấy

const buf2 = Buffer.from('Hello World!');
2 và
const buf2 = Buffer.from('Hello World!');
3. Cái thứ ba là
const buf2 = Buffer.from('Hello World!');
4

const buf3 = Buffer.allocUnsafe(10);

Khi trả về, hàm này có thể chứa dữ liệu cũ cần ghi đè

Tương tác với bộ đệm

Có các tương tác khác nhau có thể được thực hiện với API bộ đệm. Chúng tôi sẽ bao gồm hầu hết trong số họ ở đây. Hãy để chúng tôi bắt đầu với việc chuyển đổi bộ đệm thành JSON

________số 8

JSON chỉ định rằng loại đối tượng được chuyển đổi là Bộ đệm và dữ liệu của nó. Chuyển đổi bộ đệm trống thành JSON sẽ cho chúng ta thấy rằng nó không chứa gì ngoài số không

const emptyBuf = Buffer.alloc(10);

emptyBuf.toJSON();

// Output: { "type": "Buffer", "data": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] }

Xin lưu ý rằng, API bộ đệm cũng cung cấp hàm trực tiếp

const buf2 = Buffer.from('Hello World!');
5 để chuyển đổi bộ đệm thành đối tượng JSON. Để kiểm tra kích thước của bộ đệm, chúng ta có thể sử dụng phương pháp
const buf2 = Buffer.from('Hello World!');
6

const buf2 = Buffer.from('Hello World!');
2

Bây giờ hãy để chúng tôi chuyển đổi bộ đệm thành một chuỗi có thể đọc được, trong trường hợp của chúng tôi, mã hóa utf-8

const buf2 = Buffer.from('Hello World!');
3

const buf2 = Buffer.from('Hello World!');
7 theo mặc định chuyển đổi bộ đệm thành chuỗi định dạng utf-8. Đây là cách bạn giải mã một bộ đệm. Nếu bạn chỉ định mã hóa, bạn có thể chuyển đổi bộ đệm sang mã hóa khác

const buf2 = Buffer.from('Hello World!');
5

Thông tin thêm về bộ đệm

  • Cần hiểu rõ hơn về bộ đệm trong Node. js?

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO


Nếu bài viết này hữu ích, hãy tweet nó

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Mã hóa Base64 là một cách để chuyển đổi dữ liệu (thường là nhị phân) thành bộ ký tự ASCII. Điều quan trọng cần đề cập ở đây là Base64 không phải là một kỹ thuật mã hóa hoặc nén, mặc dù đôi khi nó có thể bị nhầm lẫn là mã hóa do cách nó che khuất dữ liệu. Trên thực tế, kích thước của một đoạn thông tin được mã hóa Base64 là 1. 3333 lần kích thước thực tế của dữ liệu gốc của bạn

Base64 là kỹ thuật mã hóa cơ sở được sử dụng rộng rãi nhất với Base16 và Base32 là hai lược đồ mã hóa thường được sử dụng khác

Base64 hoạt động như thế nào?

Chuyển đổi dữ liệu thành base64 là một quá trình gồm nhiều bước. Đây là cách nó hoạt động cho các chuỗi văn bản

  1. Tính phiên bản nhị phân 8 bit của văn bản đầu vào
  2. Nhóm lại phiên bản 8 bit của dữ liệu thành nhiều khối 6 bit
  3. Tìm phiên bản thập phân của từng đoạn nhị phân 6 bit
  4. Tìm ký hiệu Base64 cho từng giá trị thập phân qua bảng tra cứu Base64

Để hiểu rõ hơn về khái niệm này, chúng ta hãy xem một ví dụ

Giả sử chúng ta có chuỗi "Go win" và chúng ta muốn chuyển nó thành chuỗi Base64. Bước đầu tiên là chuyển đổi chuỗi này thành nhị phân. Phiên bản nhị phân của "Go win" là

const buf2 = Buffer.from('Hello World!');
6

Bạn có thể thấy ở đây mỗi ký tự được biểu thị bằng 8 bit. Tuy nhiên, như chúng tôi đã nói trước đó, Base64 chuyển đổi dữ liệu ở dạng nhị phân 8 bit thành các khối 6 bit. Điều này là do định dạng Base64 chỉ có 64 ký tự. 26 chữ cái viết hoa, 26 chữ cái viết thường, 10 ký tự số và ký hiệu "+" và "/" cho dòng mới

Base64 không sử dụng tất cả các ký tự đặc biệt ASCII, mà chỉ sử dụng một số ký tự này. Lưu ý rằng một số triển khai của Base64 sử dụng các ký tự đặc biệt khác với "+" và "/"

Quay lại ví dụ, chúng ta hãy chia dữ liệu 8 bit thành các khối 6 bit

const buf2 = Buffer.from('Hello World!');
7

Không phải lúc nào bạn cũng có thể chia dữ liệu thành các bộ 6 bit đầy đủ, trong trường hợp đó, bạn sẽ phải xử lý phần đệm

Bây giờ với mỗi đoạn trên, chúng ta phải tìm giá trị thập phân của nó. Các giá trị thập phân này đã được đưa ra dưới đây

const buf2 = Buffer.from('Hello World!');
8

Cuối cùng, chúng ta phải xem giá trị Base64 cho từng số thập phân mà chúng ta vừa tính toán từ dữ liệu nhị phân. Bảng mã hóa Base64 trông như thế này

Ở đây bạn có thể thấy rằng số thập phân 17 tương ứng với "R" và số thập phân 54 tương ứng với "2", v.v. Sử dụng bảng mã hóa này, chúng ta có thể thấy rằng chuỗi "Go win" được mã hóa thành "R28gd2lu" bằng Base64. Bạn có thể sử dụng bất kỳ trình chuyển đổi văn bản trực tuyến nào sang Base64 để xác minh kết quả này

Tại sao nên sử dụng Mã hóa Base64?

Việc gửi thông tin ở định dạng nhị phân đôi khi có thể gặp rủi ro vì không phải tất cả các ứng dụng hoặc hệ thống mạng đều có thể xử lý dữ liệu nhị phân thô. Mặt khác, bộ ký tự ASCII được biết đến rộng rãi và rất đơn giản để xử lý đối với hầu hết các hệ thống.

Ví dụ: máy chủ email mong đợi dữ liệu văn bản, vì vậy ASCII thường được sử dụng. Do đó, nếu bạn muốn gửi hình ảnh hoặc bất kỳ tệp nhị phân nào khác tới máy chủ email, trước tiên bạn cần mã hóa nó ở định dạng dựa trên văn bản, tốt nhất là ASCII. Đây là nơi mã hóa Base64 cực kỳ hữu ích trong việc chuyển đổi dữ liệu nhị phân sang định dạng chính xác

Mã hóa chuỗi Base64 bằng nút. js

Cách dễ nhất để mã hóa chuỗi Base64 trong Node. js thông qua đối tượng Buffer. trong nút. js,

const buf2 = Buffer.from('Hello World!');
1 là một đối tượng toàn cầu, điều đó có nghĩa là bạn không cần sử dụng câu lệnh yêu cầu để sử dụng đối tượng
const buf2 = Buffer.from('Hello World!');
1 trong các ứng dụng của mình

Bên trong

const buf2 = Buffer.from('Hello World!');
1 là một mảng số nguyên bất biến cũng có khả năng thực hiện nhiều mã hóa/giải mã khác nhau. Chúng bao gồm đến/từ mã hóa UTF-8, UCS2, Base64 hoặc thậm chí Hex. Khi bạn viết mã xử lý và thao tác dữ liệu, có thể bạn sẽ sử dụng đối tượng
const buf2 = Buffer.from('Hello World!');
1 vào một thời điểm nào đó

Hãy xem ví dụ sau. Ở đây chúng tôi sẽ mã hóa một chuỗi văn bản thành Base64 bằng cách sử dụng đối tượng

const buf2 = Buffer.from('Hello World!');
1. Lưu đoạn mã sau vào tệp "encode-text. js"

const buf2 = Buffer.from('Hello World!');
9

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

Trong đoạn script trên, chúng tôi tạo một đối tượng bộ đệm mới và chuyển cho nó chuỗi mà chúng tôi muốn chuyển đổi thành Base64. Sau đó, chúng tôi gọi phương thức "toString" trên đối tượng bộ đệm mà chúng tôi vừa tạo và chuyển nó "base64" làm tham số. Phương thức "toString" với tham số "base64" sẽ trả về dữ liệu ở dạng chuỗi Base64. Chạy đoạn mã trên, bạn sẽ thấy đầu ra sau

const buf1 = Buffer.alloc(10);
0

Ở đầu ra, chúng ta có thể thấy bản sao Base64 cho chuỗi mà chúng ta đã chuyển đổi thành Base64

Giải mã chuỗi Base64 bằng nút. js

Giải mã chuỗi Base64 khá giống với mã hóa nó. Bạn phải tạo một đối tượng bộ đệm mới và truyền hai tham số cho hàm tạo của nó. Tham số đầu tiên là dữ liệu trong Base64 và tham số thứ hai là "base64". Sau đó, bạn chỉ cần gọi "toString" trên đối tượng bộ đệm nhưng lần này tham số được truyền cho phương thức sẽ là "ascii" vì đây là loại dữ liệu mà bạn muốn dữ liệu Base64 của mình chuyển đổi thành. Hãy xem đoạn mã sau để tham khảo

const buf1 = Buffer.alloc(10);
1

Thêm dữ liệu vào "ascii. js" và lưu nó. Ở đây chúng tôi đã sử dụng "Tm8gdG8gUmFjaXNt" làm dữ liệu đầu vào Base64. Khi dữ liệu này được giải mã, nó sẽ hiển thị "Không phân biệt chủng tộc". Điều này là do từ ví dụ trước, chúng ta biết rằng "Không phân biệt chủng tộc" tương đương với "Tm8gdG8gUmFjaXNt". Chạy đoạn mã trên với Node. js. Nó sẽ hiển thị đầu ra sau

Mã hóa dữ liệu nhị phân thành chuỗi Base64

Như đã đề cập ở đầu bài viết, mục đích chính của mã hóa Base64 là chuyển đổi dữ liệu nhị phân sang định dạng văn bản. Hãy để chúng tôi xem một ví dụ nơi chúng tôi sẽ chuyển đổi một hình ảnh (dữ liệu nhị phân) thành một chuỗi Base64. Hãy xem ví dụ sau

const buf1 = Buffer.alloc(10);
2

Trong đoạn mã trên, chúng tôi tải một hình ảnh vào bộ đệm thông qua phương pháp

const buf2 = Buffer.from('Hello World!');
74 của mô-đun
const buf2 = Buffer.from('Hello World!');
75. Phần còn lại của quy trình tương tự như tạo chuỗi Base64 từ chuỗi ASCII bình thường

Khi bạn chạy đoạn mã trên, bạn sẽ thấy đầu ra sau

const buf1 = Buffer.alloc(10);
5

Mặc dù hình ảnh thực tế rất nhỏ (25x19), đầu ra vẫn khá lớn, một phần là do Base64 tăng kích thước của dữ liệu, như chúng tôi đã đề cập trước đó

Giải mã chuỗi Base64 thành dữ liệu nhị phân

Quá trình đảo ngược ở đây rất giống với cách chúng ta giải mã các chuỗi Base64, như chúng ta đã thấy trong phần trước. Sự khác biệt lớn nhất là đích đầu ra và cách dữ liệu được ghi ở đó. Hãy xem ví dụ

const buf1 = Buffer.alloc(10);
6

Ở đây bạn có thể thấy rằng chúng tôi bắt đầu với dữ liệu Base64 (dữ liệu này cũng sẽ được nhận từ một ổ cắm hoặc một số đường truyền thông khác) và chúng tôi tải nó vào một đối tượng

const buf2 = Buffer.from('Hello World!');
1. Khi tạo bộ đệm, chúng tôi cho biết bộ đệm ở định dạng
const buf2 = Buffer.from('Hello World!');
77, cho phép bộ đệm phân tích cú pháp cho phù hợp để lưu trữ nội bộ

Để lưu dữ liệu trở lại định dạng PNG thô, chúng tôi chỉ cần chuyển đối tượng

const buf2 = Buffer.from('Hello World!');
1 sang phương thức
const buf2 = Buffer.from('Hello World!');
79 của chúng tôi và nó sẽ thực hiện chuyển đổi cho chúng tôi

Phần kết luận

Mã hóa Base64 là một trong những cách phổ biến nhất để chuyển đổi dữ liệu nhị phân thành văn bản ASCII thuần túy. Đây là một định dạng rất hữu ích để giao tiếp giữa một hoặc nhiều hệ thống không thể dễ dàng xử lý dữ liệu nhị phân, như hình ảnh trong đánh dấu HTML hoặc yêu cầu web

trong nút. js, đối tượng

const buf2 = Buffer.from('Hello World!');
1 có thể được sử dụng để mã hóa và giải mã các chuỗi Base64 sang và từ nhiều định dạng khác, cho phép bạn dễ dàng chuyển đổi dữ liệu qua lại khi cần

Làm cách nào để chuyển đổi bộ đệm thành chuỗi trong nodejs?

Tóm lại, thật dễ dàng để chuyển đổi một đối tượng Bộ đệm thành một chuỗi bằng cách sử dụng phương thức toString() . Thông thường, bạn sẽ muốn mã hóa UTF-8 mặc định nhưng có thể chỉ định một mã hóa khác nếu cần. Để chuyển đổi từ một chuỗi thành một đối tượng Bộ đệm, hãy sử dụng Bộ đệm tĩnh.

Làm cách nào để giải mã bộ đệm nhị phân thành hình ảnh trong nút js?

từ (dữ liệu); . from(data, 'binary') let imgData = new Blob(binary. bộ đệm, { loại. 'application/octet-binary' }); . tạoObjectURL(imgData);

Làm cách nào để giải mã một chuỗi trong nút js?

Có thể truy cập nó bằng cách sử dụng. const { StringDecoder } = yêu cầu('nút. string_decoder'); Ví dụ sau minh họa cách sử dụng cơ bản của lớp StringDecoder. const { StringDecoder } = yêu cầu ('nút. string_decoder'); .

Bạn sẽ chuyển đổi bộ đệm thành JSON trong nút JS như thế nào?

Bộ đệm . toJSON() method trả về bộ đệm ở định dạng JSON. Ghi chú. JSON. Stringify() là phương thức cũng có thể được sử dụng để trả về dữ liệu ở định dạng JSON.