Hướng dẫn python byte to ascii char - byte python thành ký tự ascii

Tôi đang sử dụng Python 3.5

Tôi có một vài chuỗi byte đại diện cho văn bản được mã hóa trong các codec khác nhau, vì vậy: b'mybytesstring', bây giờ một số được mã hóa Utf8 khác là latin1, v.v. Điều tôi muốn theo thứ tự sau là:

  • Chuyển đổi chuỗi byte thành chuỗi giống như ASCII.
  • Chuyển đổi ASCII giống như chuỗi trở lại chuỗi byte.
  • Giải mã chuỗi byte với codec chính xác.

Vấn đề là tôi phải di chuyển chuỗi byte thành một thứ không chấp nhận các đối tượng byte nên tôi đang tìm kiếm một giải pháp cho phép tôi làm bytes -> ascii -> bytes một cách an toàn.

Sjakobi

3,4661 Huy hiệu vàng25 Huy hiệu bạc42 Huy hiệu đồng1 gold badge25 silver badges42 bronze badges

Đã hỏi ngày 6 tháng 9 năm 2017 lúc 22:30Sep 6, 2017 at 22:30

2

x = x.decode[].encode['ascii',errors='ignore']

Đã trả lời ngày 6 tháng 9 năm 2017 lúc 22:32Sep 6, 2017 at 22:32

DyzdyzDYZ

53.1k10 Huy hiệu vàng61 Huy hiệu bạc89 Huy hiệu đồng10 gold badges61 silver badges89 bronze badges

Bạn sử dụng các phương pháp encodedecode cho việc này và cung cấp mã hóa mong muốn cho chúng. Tôi không rõ nếu bạn biết mã hóa trước đó. Nếu bạn không biết điều đó, bạn đang gặp rắc rối. Bạn có thể phải đoán mã hóa theo một cách nào đó, mạo hiểm đầu ra rác.

Đã trả lời ngày 6 tháng 9 năm 2017 lúc 22:34Sep 6, 2017 at 22:34

Irmen de Jongirmen de JongIrmen de Jong

2.6381 Huy hiệu vàng13 Huy hiệu bạc26 Huy hiệu đồng1 gold badge13 silver badges26 bronze badges

1

Được rồi, tôi đã tìm thấy một giải pháp dễ dàng hơn nhiều so với tôi nghĩ

mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']

Đã trả lời ngày 7 tháng 9 năm 2017 lúc 8:10Sep 7, 2017 at 8:10

ThagorthagorThagor

7602 Huy hiệu vàng9 Huy hiệu bạc 30 Huy hiệu Đồng2 gold badges9 silver badges30 bronze badges

1

Mô-đun

mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
0 chứa một số phương pháp để chuyển đổi giữa các biểu diễn nhị phân được mã hóa nhị phân và khác nhau. Thông thường, bạn sẽ không sử dụng các chức năng này trực tiếp nhưng sử dụng các mô -đun trình bao bọc như
mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
1 hoặc
mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
2 thay thế. Mô-đun
mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
0 chứa các hàm cấp thấp được viết bằng C cho tốc độ lớn hơn được sử dụng bởi các mô-đun cấp cao hơn.

Ghi chú

mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
4 Chức năng chấp nhận các chuỗi Unicode chỉ chứa các ký tự ASCII. Các chức năng khác chỉ chấp nhận các đối tượng giống như byte [chẳng hạn như
mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
5,
mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
6 và các đối tượng khác hỗ trợ giao thức bộ đệm].bytes-like objects [such as
mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
5,
mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
6 and other objects that support the buffer protocol].

Thay đổi trong phiên bản 3.3: Các chuỗi unicode chỉ ASCII-ASCII-hiện được chấp nhận bởi các hàm

mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
4.ASCII-only unicode strings are now accepted by the
mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
4 functions.

Mô -đun

mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
0 xác định các chức năng sau:

Binascii.a2b_uu [Chuỗi] ¶a2b_uu[string]

Chuyển đổi một dòng dữ liệu uuencoded trở lại nhị phân và trả lại dữ liệu nhị phân. Các dòng thường chứa 45 [nhị phân] byte, ngoại trừ dòng cuối cùng. Dữ liệu dòng có thể được theo sau bởi khoảng trắng.

Binascii.b2a_uu [dữ liệu, *, backtick = false] ¶b2a_uu[data, *, backtick=False]

Chuyển đổi dữ liệu nhị phân thành một dòng các ký tự ASCII, giá trị trả về là dòng được chuyển đổi, bao gồm cả char mới. Độ dài của dữ liệu phải nhiều nhất là 45. Nếu Backtick là đúng, các số không được biểu thị bằng

mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
9 thay vì không gian.

Đã thay đổi trong phiên bản 3.7: Đã thêm tham số BackTick.Added the backtick parameter.

Binascii.a2b_base64 [chuỗi, /, *, strict_mode = false] ¶a2b_base64[string, /, *, strict_mode=False]

Chuyển đổi một khối dữ liệu Base64 trở lại nhị phân và trả lại dữ liệu nhị phân. Nhiều hơn một dòng có thể được thông qua tại một thời điểm.

Nếu strict_mode là đúng, chỉ có dữ liệu base64 hợp lệ sẽ được chuyển đổi. Dữ liệu Base64 không hợp lệ sẽ tăng

print[binascii.crc32[b"hello world"]]
# Or, in two pieces:
crc = binascii.crc32[b"hello"]
crc = binascii.crc32[b" world", crc]
print['crc32 = {:#010x}'.format[crc]]
0.

Cơ sở hợp lệ64:
  • Phù hợp với RFC 3548.RFC 3548.

  • Chỉ chứa các ký tự từ bảng chữ cái Base64.

  • Không chứa dữ liệu dư thừa sau khi đệm [bao gồm đệm dư, newlines, v.v.].

  • Không bắt đầu với một đệm.

Đã thay đổi trong phiên bản 3.11: Đã thêm tham số StricT_Mode.Added the strict_mode parameter.

Binascii.b2a_base64 [dữ liệu, *, newline = true] ¶b2a_base64[data, *, newline=True]

Chuyển đổi dữ liệu nhị phân thành một dòng các ký tự ASCII trong mã hóa Base64. Giá trị trả về là dòng được chuyển đổi, bao gồm cả char mới nếu dòng mới là đúng. Đầu ra của hàm này phù hợp với RFC 3548.RFC 3548.

Đã thay đổi trong phiên bản 3.6: Đã thêm tham số Newline.Added the newline parameter.

Binascii.a2b_qp [dữ liệu, tiêu đề = false] ¶a2b_qp[data, header=False]

Chuyển đổi một khối dữ liệu được in được trích dẫn trở lại nhị phân và trả lại dữ liệu nhị phân. Nhiều hơn một dòng có thể được thông qua tại một thời điểm. Nếu tiêu đề đối số tùy chọn có mặt và đúng, gạch dưới sẽ được giải mã dưới dạng không gian.

Binascii.b2a_qp [Data, quotetabs = false, istext = true, header = false]b2a_qp[data, quotetabs=False, istext=True, header=False]

Chuyển đổi dữ liệu nhị phân thành một dòng của các ký tự ASCII trong mã hóa được in được trích dẫn. Giá trị trả về là [các] dòng được chuyển đổi. Nếu các trích dẫn đối số tùy chọn có mặt và đúng, tất cả các tab và khoảng trống sẽ được mã hóa. Nếu đối số tùy chọn Istext có mặt và đúng, Newlines không được mã hóa nhưng khoảng trắng sẽ được mã hóa. Nếu tiêu đề đối số tùy chọn có mặt và đúng, các không gian sẽ được mã hóa dưới dạng dấu gạch dưới trên RFC 1522. Nếu tiêu đề đối số tùy chọn có mặt và sai, các ký tự mới cũng sẽ được mã hóa; Nếu không thì chuyển đổi linefeed có thể làm hỏng luồng dữ liệu nhị phân.RFC 1522. If the optional argument header is present and false, newline characters will be encoded as well; otherwise linefeed conversion might corrupt the binary data stream.

Binascii.crc_hqx [dữ liệu, giá trị] ¶crc_hqx[data, value]

Tính giá trị CRC 16 bit của dữ liệu, bắt đầu bằng giá trị là CRC ban đầu và trả về kết quả. Điều này sử dụng đa thức CRC-CCITT x16 + x12 + x5 + 1, thường được biểu thị là 0x1021. CRC này được sử dụng ở định dạng Binhex4.

Binascii.crc32 [dữ liệu [, giá trị]] ¶crc32[data[, value]]

Tính toán CRC-32, tổng kiểm tra dữ liệu 32 bit không dấu, bắt đầu bằng CRC ban đầu của giá trị. CRC ban đầu mặc định bằng không. Thuật toán phù hợp với tổng kiểm tra tệp zip. Do thuật toán được thiết kế để sử dụng làm thuật toán tổng kiểm tra, nên nó không phù hợp để sử dụng như một thuật toán băm chung. Sử dụng như sau:

print[binascii.crc32[b"hello world"]]
# Or, in two pieces:
crc = binascii.crc32[b"hello"]
crc = binascii.crc32[b" world", crc]
print['crc32 = {:#010x}'.format[crc]]

Thay đổi trong phiên bản 3.0: Kết quả luôn không được ký.The result is always unsigned.

Binascii.b2a_hex [data [, sep [, byte_per_sep = 1]]] ¶ Binascii.hexlify [data [, sep [, byte_per_sep = 1]]b2a_hex[data[, sep[, bytes_per_sep=1]]]binascii.hexlify[data[, sep[, bytes_per_sep=1]]]

Trả về biểu diễn thập lục phân của dữ liệu nhị phân. Mỗi byte dữ liệu được chuyển đổi thành biểu diễn HEX 2 chữ số tương ứng. Do đó, đối tượng byte được trả về dài gấp đôi chiều dài của dữ liệu.

Chức năng tương tự [nhưng trả về chuỗi văn bản] cũng có thể truy cập thuận tiện bằng phương thức

print[binascii.crc32[b"hello world"]]
# Or, in two pieces:
crc = binascii.crc32[b"hello"]
crc = binascii.crc32[b" world", crc]
print['crc32 = {:#010x}'.format[crc]]
1.

Nếu SEP được chỉ định, nó phải là một đối tượng STR hoặc byte đơn lẻ. Nó sẽ được chèn vào đầu ra sau mỗi byte_per_sep byte đầu vào. Vị trí phân tách được tính từ đầu bên phải của đầu ra theo mặc định, nếu bạn muốn đếm từ bên trái, hãy cung cấp giá trị byte âm_per_sep âm.

>>> import binascii
>>> binascii.b2a_hex[b'\xb9\x01\xef']
b'b901ef'
>>> binascii.hexlify[b'\xb9\x01\xef', '-']
b'b9-01-ef'
>>> binascii.b2a_hex[b'\xb9\x01\xef', b'_', 2]
b'b9_01ef'
>>> binascii.b2a_hex[b'\xb9\x01\xef', b' ', -2]
b'b901 ef'

Đã thay đổi trong phiên bản 3.8: Các tham số SEP và BYTES_PER_SEP đã được thêm vào.The sep and bytes_per_sep parameters were added.

Binascii.a2b_hex [hexstr] ¶ Binascii.unhexlify [Hexstr] ¶a2b_hex[hexstr]binascii.unhexlify[hexstr]

Trả về dữ liệu nhị phân được biểu thị bằng chuỗi thập lục phân hexstr. Hàm này là nghịch đảo của

print[binascii.crc32[b"hello world"]]
# Or, in two pieces:
crc = binascii.crc32[b"hello"]
crc = binascii.crc32[b" world", crc]
print['crc32 = {:#010x}'.format[crc]]
2. Hexstr phải chứa một số chữ số thập lục phân [có thể là chữ hoa hoặc chữ thường], nếu không một ngoại lệ
print[binascii.crc32[b"hello world"]]
# Or, in two pieces:
crc = binascii.crc32[b"hello"]
crc = binascii.crc32[b" world", crc]
print['crc32 = {:#010x}'.format[crc]]
3 được nâng lên.

Chức năng tương tự [chỉ chấp nhận các đối số chuỗi văn bản, nhưng tự do hơn đối với khoảng trắng] cũng có thể truy cập được bằng phương pháp lớp

print[binascii.crc32[b"hello world"]]
# Or, in two pieces:
crc = binascii.crc32[b"hello"]
crc = binascii.crc32[b" world", crc]
print['crc32 = {:#010x}'.format[crc]]
4.

Exceptionbinascii.error¶binascii.Error

Ngoại lệ nêu ra lỗi. Đây thường là những lỗi lập trình.

Exceptionbinascii.incomplete¶binascii.Incomplete

Ngoại lệ được nâng lên trên dữ liệu không đầy đủ. Đây thường không phải là lỗi lập trình, nhưng có thể được xử lý bằng cách đọc thêm một chút dữ liệu và thử lại.

Xem thêm

Mô -đun
mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
2

Hỗ trợ mã hóa kiểu Base64 tuân thủ RFC trong cơ sở 16, 32, 64 và 85.

Mô -đun
mybytes = 'ëýđþé'.encode[]
str_mybytes = str[mybytes]
again_mybytes = eval[str_mybytes]
decoded = again_mybytes.decode['utf8']
1

Hỗ trợ mã hóa UU được sử dụng trên Unix.

Mô -đun
print[binascii.crc32[b"hello world"]]
# Or, in two pieces:
crc = binascii.crc32[b"hello"]
crc = binascii.crc32[b" world", crc]
print['crc32 = {:#010x}'.format[crc]]
7

Hỗ trợ cho mã hóa được in được in được sử dụng trong các tin nhắn email MIME.

Làm cách nào để chuyển đổi sang ASCII trong Python?

chr [] là một hàm tích hợp trong python được sử dụng để chuyển đổi mã ASCII thành ký tự tương ứng của nó. Tham số được truyền trong hàm là một giá trị loại số nguyên. Hàm trả về một ký tự mà tham số là mã ASCII.. The parameter passed in the function is a numeric, integer type value. The function returns a character for which the parameter is the ASCII code.

Làm thế nào để bạn giải mã byte trong Python?

Decode [] được sử dụng để giải mã byte cho một đối tượng chuỗi.Giải mã cho một đối tượng chuỗi phụ thuộc vào các đối số được chỉ định.Nó cũng cho phép chúng tôi đề cập đến một sơ đồ xử lý lỗi để sử dụng cho các lỗi phân biệt.Lưu ý: Byte là loại chuỗi nhị phân tích hợp trong Python. is used to decode bytes to a string object. Decoding to a string object depends on the specified arguments. It also allows us to mention an error handling scheme to use for seconding errors. Note: bytes is a built-in binary sequence type in Python.

Làm cách nào để lấy mã ASCII cho một nhân vật trong Python?

Dưới đây là một số phương thức trong các ngôn ngữ lập trình khác nhau để in giá trị ASCII của một ký tự đã cho: Mã python sử dụng hàm ord: ord []: Nó chuyển đổi chuỗi có chiều dài nhất định, trả về một số nguyên đại diện cho điểm mã unicode của ký tự.Ví dụ: ord ['a'] trả về số nguyên 97.

Byteestring là gì?

Chuỗi byte là một mảng byte có độ dài cố định.A byte là một số nguyên chính xác trong khoảng từ 0 đến 255.Một chuỗi byte có thể bị thay đổi hoặc bất biến.a fixed-length array of bytes. A byte is an exact integer between 0 and 255 inclusive. A byte string can be mutable or immutable.

Bài Viết Liên Quan

Chủ Đề