Làm cách nào để chuyển đổi Base64 thành byte trong Python?

Các mã hóa base64, base32 và base16 chuyển đổi các byte 8 bit thành các giá trị có 6, 5 hoặc 4 bit dữ liệu hữu ích trên mỗi byte, cho phép các byte không phải ASCII được mã hóa thành các ký tự ASCII để truyền qua các giao thức yêu cầu ASCII đơn giản, chẳng hạn như . Các giá trị cơ sở tương ứng với độ dài của bảng chữ cái được sử dụng trong mỗi mã hóa. Ngoài ra còn có các biến thể an toàn cho URL của mã hóa ban đầu sử dụng các kết quả hơi khác nhau

Mã hóa cơ sở 64

Một ví dụ cơ bản về mã hóa một số văn bản trông như thế này

import base64

# Load this source file and strip the header.
initial_data = open[__file__, 'rt'].read[].split['#end_pymotw_header'][1]

encoded_data = base64.b64encode[initial_data]

num_initial = len[initial_data]
padding = { 0:0, 1:2, 2:1 }[num_initial % 3]

print '%d bytes before encoding' % num_initial
print 'Expect %d padding bytes' % padding
print '%d bytes after encoding' % len[encoded_data]
print
#print encoded_data
for i in xrange[[len[encoded_data]/40]+1]:
    print encoded_data[i*40:[i+1]*40]

Đầu ra hiển thị 558 byte của nguồn ban đầu mở rộng thành 744 byte sau khi được mã hóa

Ghi chú

Không có dấu xuống dòng trong đầu ra do thư viện tạo ra, vì vậy tôi đã chia nhỏ dữ liệu được mã hóa một cách giả tạo để làm cho nó vừa vặn hơn trên trang

$ python base64_b64encode.py

113 bytes before encoding
Expect 1 padding bytes
152 bytes after encoding

CgppbXBvcnQgYmFzZTY0CgojIExvYWQgdGhpcyBz
b3VyY2UgZmlsZSBhbmQgc3RyaXAgdGhlIGhlYWRl
ci4KaW5pdGlhbF9kYXRhID0gb3BlbihfX2ZpbGVf
XywgJ3J0JykucmVhZCgpLnNwbGl0KCc=

Giải mã Base64

Chuỗi được mã hóa có thể được chuyển đổi trở lại dạng ban đầu bằng cách lấy 4 byte và chuyển đổi chúng thành 3 ban đầu, sử dụng tra cứu ngược. Hàm b64decode[] thực hiện điều đó cho bạn

import base64

original_string = 'This is the data, in the clear.'
print 'Original:', original_string

encoded_string = base64.b64encode[original_string]
print 'Encoded :', encoded_string

decoded_string = base64.b64decode[encoded_string]
print 'Decoded :', decoded_string

Quá trình mã hóa xem xét từng chuỗi 24 bit ở đầu vào [3 byte] và mã hóa 24 bit đó trải rộng trên 4 byte ở đầu ra. Hai ký tự cuối cùng, ==, là phần đệm vì số bit trong chuỗi gốc không chia hết cho 24 trong ví dụ này

$ python base64_b64decode.py

Original: This is the data, in the clear.
Encoded : VGhpcyBpcyB0aGUgZGF0YSwgaW4gdGhlIGNsZWFyLg==
Decoded : This is the data, in the clear.

Các biến thể an toàn cho URL

Vì bảng chữ cái base64 mặc định có thể sử dụng + và / và hai ký tự đó được sử dụng trong URL, nên cần chỉ định mã hóa thay thế với các ký tự thay thế cho các ký tự đó. Dấu + được thay thế bằng dấu - và / được thay thế bằng dấu gạch dưới [_]. Mặt khác, bảng chữ cái là như nhau

import base64

for original in [ chr[251] + chr[239], chr[255] * 2 ]:
    print 'Original         :', repr[original]
    print 'Standard encoding:', base64.standard_b64encode[original]
    print 'URL-safe encoding:', base64.urlsafe_b64encode[original]
    print

$ python base64_urlsafe.py

Original         : '\xfb\xef'
Standard encoding: ++8=
URL-safe encoding: --8=

Original         : '\xff\xff'
Standard encoding: //8=
URL-safe encoding: __8=

Mã hóa khác

Ngoài cơ sở 64, mô-đun cung cấp các chức năng để làm việc với dữ liệu được mã hóa cơ sở 32 và cơ sở 16 [hex]

Mã hóa Base64 cho phép chúng tôi chuyển đổi byte chứa dữ liệu nhị phân hoặc văn bản thành ký tự ASCII. Bằng cách mã hóa dữ liệu, chúng tôi cải thiện khả năng dữ liệu được các hệ thống khác nhau xử lý chính xác. Thật không may, một số hệ thống không hiểu dữ liệu ở định dạng byte, vì vậy chúng tôi phải chuyển đổi dữ liệu

Mục đích của base64. b64encode[] trong Python là chuyển đổi dữ liệu nhị phân thành “văn bản” an toàn ASCII. Nhưng Python hoàn toàn không đồng ý với điều đó. Python hiện rất nghiêm ngặt về vấn đề này. phương thức encode[] thậm chí không tồn tại, và do đó, 'xyz'. encode['base64'] sẽ tăng AttributeError.

Bây giờ, hãy hiểu mã hóa base64

Mã hóa Base64 là gì?

Mã hóa Base64 là kiểu chuyển đổi byte thành ký tự ASCII. Ví dụ, trong toán học, cơ sở của một hệ thống số cho biết có bao nhiêu ký tự khác nhau đại diện cho các số

Tên của mã hóa base64 xuất phát trực tiếp từ một định nghĩa toán học của các cơ sở. chúng tôi có 64 ký tự đại diện cho các số

Bộ ký tự Base64 chứa các thông tin sau

  1. 26 chữ hoa
  2. 26 chữ thường
  3. 10 số
  4. + và / cho các dòng mới

Khi máy tính chuyển đổi các ký tự Base64 thành nhị phân, mỗi ký tự Base64 đại diện cho 6 bit thông tin

Python thành chuỗi base64

Để chuyển đổi Hình ảnh thành Chuỗi Base64 trong Python, hãy sử dụng mô-đun Python base64 cung cấp phương thức b64encode[]. Python base64. hàm b64encode[] mã hóa một chuỗi bằng Base64 và trả về chuỗi đó.

cú pháp

base64.b64encode[s[, altchars]]

Thông số

Hàm lấy s làm đầu vào và là tham số bắt buộc

Các altchars tùy chọn phải là một chuỗi có độ dài ít nhất là 2 [các ký tự bổ sung được bỏ qua], xác định bảng chữ cái thay thế cho các ký tự + và /

Điều này cho phép một ứng dụng, ví dụ, tạo các chuỗi Base64 an toàn cho URL hoặc hệ thống tệp. Giá trị mặc định là Không, bảng chữ cái Base64 tiêu chuẩn được sử dụng

Giá trị trả về

Hàm b64encode[] trả về chuỗi được mã hóa

Ví dụ về chuyển đổi Image thành base64 trong Python

import base64

with open["grayimage.png", "rb"] as img_file:
    b64_string = base64.b64encode[img_file.read[]]
print[b64_string]

Trong thư mục dự án của tôi, tôi có một hình ảnh được gọi là hình ảnh màu xám. png. Vui lòng đảm bảo rằng đường dẫn hình ảnh của bạn là chính xác

Trong ví dụ này, trước tiên chúng tôi mở tệp ở chế độ 'rb'. Sau đó, chúng tôi đọc các tập tin hình ảnh

Python với hàm open[] mở một tệp và sau đó chúng ta có thể thực hiện bất kỳ thao tác nào chúng ta muốn. Nó tự động đóng tệp khi chúng tôi không cần nó nữa

Sau đó mã hóa nó bằng phương thức b64encode[]. Bạn phải đọc tệp hình ảnh trước khi mã hóa nó.

Tôi nhận được chuỗi dài ở đầu ra trong thiết bị đầu cuối, như sau

________số 8

Chuỗi của bạn đã được in. Nhưng ở vị trí bắt đầu của chuỗi base64 của bạn, có một b'

Hoặc bạn có thể nói chuỗi được mã hóa base64 của bạn nằm trong cặp trích dẫn đơn

Để xóa b’ khỏi tiền tố của mã base64 trong Python, bạn có thể sử dụng chuỗi. phương thức mã hóa ['utf-8']

import base64

with open["grayimage.png", "rb"] as img_file:
    b64_string = base64.b64encode[img_file.read[]]
print[b64_string.decode['utf-8']]

Đó là nó

Xem thêm

Hình ảnh Python PIL sang thang độ xám

Hình ảnh Python PIL thành mảng Numpy

Cách cắt ảnh trong Python

Cách thay đổi kích thước hình ảnh trong Python

Facebook

Twitter

Pinterest

WhatsApp

Bài viết trước Python cv2 đã đọc. Cách đọc hình ảnh trong Python

Bài viết tiếp theo Cách chuyển đổi hình ảnh PIL thành mảng Numpy trong Python

kranal

https. //appdividend. com/

Krunal Lathiya là Kỹ sư phần mềm với hơn tám năm kinh nghiệm. Anh ấy đã phát triển một nền tảng vững chắc về các nguyên tắc khoa học máy tính và niềm đam mê giải quyết vấn đề. Ngoài ra, Krunal có kiến ​​thức tuyệt vời về Khoa học dữ liệu và Học máy, đồng thời là chuyên gia về Ngôn ngữ Python. Krunal có kinh nghiệm với nhiều ngôn ngữ lập trình và công nghệ khác nhau, bao gồm PHP, R, Golang và JavaScript. Anh ấy cảm thấy thoải mái khi làm việc trong lĩnh vực phát triển front-end và back-end

Làm cách nào để chuyển đổi base64 thành byte trong Python?

b64encode[]. Mã hóa đối tượng dạng byte bằng Base64 và trả về byte đã mã hóa . cơ sở64. b64decode[]. Giải mã đối tượng giống như byte được mã hóa Base64 hoặc chuỗi ASCII s và trả về byte đã giải mã.

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

Chúng ta có thể sử dụng lớp Bytes có sẵn trong Python để chuyển đổi một chuỗi thành byte. chỉ cần chuyển chuỗi làm đầu vào đầu tiên của hàm tạo của lớp Bytes và sau đó chuyển mã hóa làm đối số thứ hai . Việc in đối tượng hiển thị biểu diễn văn bản thân thiện với người dùng, nhưng dữ liệu chứa trong đó là​ theo byte.

Làm cách nào để chuyển đổi base64 thành văn bản trong Python?

def convertFromBase64 [stringToBeDecoded]. nhập chuỗi giải mã base64=str. giải mã['base64',"stringToBeDecoded"] print[decodedstring] trả về convertFromBase64[dGhpcyBpcyBzdHJpbmcgZXhhbXBsZS4uLi53b3chISE=]

Làm cách nào để giải mã tệp base64 bằng Python?

Nhập base64 và codec
Chuyển đổi chuỗi thành b"" bằng codec. mã hóa [. ] và lưu trữ dưới dạng biến [ b64Str tại đây ]
Đơn giản chỉ cần sử dụng base64. b64decode[b64Str] và lưu dưới dạng resStr
[ Tùy chọn ] In resStr

Chủ Đề