Mảng byte của nodejs thành base64

Base64 là một nhóm các sơ đồ mã hóa nhị phân thành văn bản tương tự biểu thị dữ liệu nhị phân ở định dạng chuỗi ASCII bằng cách dịch nó thành biểu diễn cơ số 64. Thuật ngữ Base64 bắt nguồn từ một cụ thể

Các lược đồ mã hóa Base64 thường được sử dụng khi có nhu cầu mã hóa dữ liệu nhị phân cần được lưu trữ và truyền qua phương tiện được thiết kế để xử lý ASCII. Điều này là để đảm bảo rằng dữ liệu vẫn còn nguyên vẹn mà không bị sửa đổi trong quá trình vận chuyển. Base64 thường được sử dụng trong một số ứng dụng bao gồm email qua MIME và lưu trữ dữ liệu phức tạp trong XML

Một ứng dụng phổ biến của mã hóa Base64 trên web là mã hóa dữ liệu nhị phân để có thể đưa vào dữ liệu. URL

Trong JavaScript có hai hàm tương ứng để giải mã và mã hóa chuỗi Base64

  • function b64EncodeUnicode[str] {
      return btoa[encodeURIComponent[str]];
    }
    
    function UnicodeDecodeB64[str] {
      return decodeURIComponent[atob[str]];
    }
    
    b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
    UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
    
    0. tạo chuỗi ASCII được mã hóa Base64 từ một "chuỗi" dữ liệu nhị phân ["btoa" nên được đọc là "nhị phân sang ASCII"]
  • function b64EncodeUnicode[str] {
      return btoa[encodeURIComponent[str]];
    }
    
    function UnicodeDecodeB64[str] {
      return decodeURIComponent[atob[str]];
    }
    
    b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
    UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
    
    1. giải mã một chuỗi được mã hóa Base64 ["atob" nên được đọc là "ASCII sang nhị phân"]

Thuật toán được sử dụng bởi

function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
1 và
function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
0 được chỉ định trong RFC 4648, phần 4

Ghi chú.

function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
0 dự kiến ​​sẽ được truyền dữ liệu nhị phân và sẽ đưa ra một ngoại lệ nếu chuỗi đã cho chứa bất kỳ ký tự nào có biểu diễn UTF-16 chiếm nhiều hơn một byte

Mỗi chữ số Base64 đại diện cho chính xác 6 bit dữ liệu. Vì vậy, ba byte 8 bit của chuỗi đầu vào/tệp nhị phân [3 × 8 bit = 24 bit] có thể được biểu thị bằng bốn chữ số Base64 6 bit [4 × 6 = 24 bit]

Điều này có nghĩa là phiên bản Base64 của một chuỗi hoặc tệp sẽ có ít nhất 133% kích thước của nguồn [tăng ~33%]. Mức tăng có thể lớn hơn nếu dữ liệu được mã hóa nhỏ. Ví dụ: chuỗi

function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
0 với
function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
1 được mã hóa thành
function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
2 với
function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
3 - tăng 300%

Vì các chuỗi JavaScript là các chuỗi được mã hóa 16-bit, nên trong hầu hết các trình duyệt, việc gọi

function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
4 trên chuỗi Unicode sẽ gây ra ngoại lệ
function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
5 nếu một ký tự vượt quá phạm vi của ký tự được mã hóa ASCII 8-bit. Có hai phương pháp có thể để giải quyết vấn đề này

  • cách đầu tiên là thoát toàn bộ chuỗi và sau đó mã hóa nó;
  • cách thứ hai là chuyển đổi chuỗi UTF-16 thành một mảng ký tự UTF-8 rồi mã hóa nó

Đây là hai phương pháp có thể

function utf8_to_b64[str] {
  return window.btoa[unescape[encodeURIComponent[str]]];
}

function b64_to_utf8[str] {
  return decodeURIComponent[escape[window.atob[str]]];
}

// Usage:
utf8_to_b64["✓ à la mode"]; // "4pyTIMOgIGxhIG1vZGU="
b64_to_utf8["4pyTIMOgIGxhIG1vZGU="]; // "✓ à la mode"

Giải pháp này đã được đề xuất bởi Johan Sundström

Một giải pháp khả thi khác mà không cần sử dụng các hàm 'unescape' và 'escape' hiện không dùng nữa. Tuy nhiên, giải pháp thay thế này không thực hiện mã hóa base64 của chuỗi đầu vào. Lưu ý sự khác biệt trong kết quả đầu ra của

function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
6 và
function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
7. Việc áp dụng giải pháp thay thế này có thể dẫn đến các vấn đề về khả năng tương tác với các ứng dụng khác

function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"

Ghi chú. Đoạn mã sau cũng hữu ích để lấy ArrayBuffer từ chuỗi Base64 và/hoặc ngược lại []

function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
0

function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
1

Hàm này cho phép chúng tôi tạo uint8Arrays hoặc ArrayBuffers từ các chuỗi được mã hóa Base64

function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
2

Ghi chú. Hàm

function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
01 trả về một
function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
02 byte. Nếu mục đích của bạn là tạo bộ đệm dữ liệu thô 16-bit/32-bit/64-bit, hãy sử dụng đối số
function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
03, là số byte mà thuộc tính
function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
04 phải tạo ra bội số [
function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
05 hoặc bỏ qua đối với ASCII, . e. , một chuỗi trong đó mỗi ký tự trong chuỗi được coi là một byte dữ liệu nhị phân] hoặc chuỗi được mã hóa UTF-8,
function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
06 đối với chuỗi UTF-16,
function b64EncodeUnicode[str] {
  return btoa[encodeURIComponent[str]];
}

function UnicodeDecodeB64[str] {
  return decodeURIComponent[atob[str]];
}

b64EncodeUnicode["✓ à la mode"]; // "JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"
UnicodeDecodeB64["JUUyJTlDJTkzJTIwJUMzJUEwJTIwbGElMjBtb2Rl"]; // "✓ à la mode"
07 đối với chuỗi UTF-32]

Làm cách nào để chuyển đổi mảng byte thành chuỗi Base64?

Chuyển đổi Mảng hình ảnh byte[] thành Chuỗi được mã hóa Base64 trong Java .
byte[] byte = Tệp. readAllBytes[pathToImage]; . readAllBytes[pathToImage];
Chuỗi base64EncodedImageBytes = Base64. getEncoder[]. encodeToString[byte];.
giải mã byte [] = Base64. getDecoder[]. giải mã [base64EncodedString];

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

Đầu tiên, bạn sẽ phân bổ một vùng đệm, sau đó bạn sẽ chuyển đổi nó thành một chuỗi, cho biết rằng chuỗi bạn muốn phải được mã hóa base64, như thế này. var buffer = newBuffer['Xin chào thế giới']; . toString['base64'];

Làm cách nào để mã hóa Base64 trong nút js?

Cách dễ nhất để mã hóa chuỗi Base64 trong Node. js là thông qua đối tượng Bộ đệm . trong nút. js, Bộ đệm 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 Bộ đệm trong các ứng dụng của mình.

Làm cách nào để chuyển đổi mảng đệm thành Base64?

JS có một cách rất đơn giản để làm điều đó. // Bước này chỉ cần thiết nếu bạn chưa có Đối tượng bộ đệm const buffer = Buffer. from[yourArrayBuffer]; . toString['base64'];

Chủ Đề