Hướng dẫn how do you convert bytes to numbers in python? - làm thế nào để bạn chuyển đổi byte thành số trong python?

Tôi hiện đang làm việc trên một chương trình mã hóa/giải mã và tôi cần có khả năng chuyển đổi byte thành một số nguyên. Tôi biết điều đó:

bytes([3]) = b'\x03'

Tuy nhiên, tôi không thể tìm hiểu làm thế nào để làm nghịch đảo. Tôi đang làm gì sai lầm khủng khiếp?

Hướng dẫn how do you convert bytes to numbers in python? - làm thế nào để bạn chuyển đổi byte thành số trong python?

Ggorlen

37K7 Huy hiệu vàng61 Huy hiệu bạc77 Huy hiệu đồng7 gold badges61 silver badges77 bronze badges

Đã hỏi ngày 30 tháng 11 năm 2015 lúc 23:04Nov 30, 2015 at 23:04

4

Giả sử bạn trên ít nhất là 3.2, có một bản tích hợp cho việc này:

________ 8 (bytes,

## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024
0, *,
## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024
1)
( bytes,
## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024
0, *,
## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024
1 )

...

Đối số bytes phải là một đối tượng giống như byte hoặc một byte sản xuất có thể lặp lại.

Đối số

## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024
0 xác định thứ tự byte được sử dụng để biểu thị số nguyên. Nếu
## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024
0 là
## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024
5, byte quan trọng nhất là ở đầu mảng byte. Nếu
## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024
0 là
## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024
7, byte quan trọng nhất là ở cuối mảng byte. Để yêu cầu thứ tự byte gốc của hệ thống máy chủ, hãy sử dụng
## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024
8 làm giá trị đơn hàng byte.

Đối số

## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024
9 cho biết liệu hai bổ sung có được sử dụng để đại diện cho số nguyên hay không.

## Examples:
int.from_bytes(b'\x00\x01', "big")                         # 1
int.from_bytes(b'\x00\x01', "little")                      # 256

int.from_bytes(b'\x00\x10', byteorder='little')            # 4096
int.from_bytes(b'\xfc\x00', byteorder='big', signed=True)  #-1024

Hướng dẫn how do you convert bytes to numbers in python? - làm thế nào để bạn chuyển đổi byte thành số trong python?

Martineau

Huy hiệu vàng 115K2525 gold badges160 silver badges284 bronze badges

Đã trả lời ngày 30 tháng 11 năm 2015 lúc 23:08Nov 30, 2015 at 23:08

Peter DeGlopperPeter DeglopperPeter DeGlopper

35.3k7 Huy hiệu vàng89 Huy hiệu bạc83 Huy hiệu đồng7 gold badges89 silver badges83 bronze badges

4

Danh sách các byte có thể đăng ký (ít nhất là trong Python 3.6). Bằng cách này, bạn có thể lấy lại giá trị thập phân của từng byte.

>>> intlist = [64, 4, 26, 163, 255]
>>> bytelist = bytes(intlist)       # b'@\x04\x1a\xa3\xff'

>>> for b in bytelist:
...    print(b)                     # 64  4  26  163  255

>>> [b for b in bytelist]           # [64, 4, 26, 163, 255]

>>> bytelist[2]                     # 26 

Hướng dẫn how do you convert bytes to numbers in python? - làm thế nào để bạn chuyển đổi byte thành số trong python?

Đã trả lời ngày 7 tháng 5 năm 2020 lúc 17:16May 7, 2020 at 17:16

Hướng dẫn how do you convert bytes to numbers in python? - làm thế nào để bạn chuyển đổi byte thành số trong python?

0

int.from_bytes( bytes, byteorder, *, signed=False )

Không hoạt động với tôi Tôi đã sử dụng chức năng từ trang web này, nó hoạt động tốt

https://coderwall.com/p/x6xtxq/convert-bytes-to-int-or-int-to-bytes-in-python

def bytes_to_int(bytes):
    result = 0
    for b in bytes:
        result = result * 256 + int(b)
    return result

def int_to_bytes(value, length):
    result = []
    for i in range(0, length):
        result.append(value >> (i * 8) & 0xff)
    result.reverse()
    return result

Đã trả lời ngày 9 tháng 11 năm 2018 lúc 21:12Nov 9, 2018 at 21:12

Hướng dẫn how do you convert bytes to numbers in python? - làm thế nào để bạn chuyển đổi byte thành số trong python?

1

>>> intlist = [64, 4, 26, 163, 255]
>>> bytelist = bytes(intlist)       # b'@\x04\x1a\xa3\xff'

>>> for b in bytelist:
...    print(b)                     # 64  4  26  163  255

>>> [b for b in bytelist]           # [64, 4, 26, 163, 255]

>>> bytelist[2]                     # 26 
0 có thể được sử dụng để chuyển đổi byte thành int (hoạt động trong Python 3.7):

list(b'\x03\x04\x05')
[3, 4, 5]

Đã trả lời ngày 22 tháng 4 lúc 7:58Apr 22 at 7:58

3

Trong trường hợp làm việc với dữ liệu được đệm, tôi thấy điều này hữu ích:

int.from_bytes([buf[0],buf[1],buf[2],buf[3]], "big")

Giả sử rằng tất cả các yếu tố trong

>>> intlist = [64, 4, 26, 163, 255]
>>> bytelist = bytes(intlist)       # b'@\x04\x1a\xa3\xff'

>>> for b in bytelist:
...    print(b)                     # 64  4  26  163  255

>>> [b for b in bytelist]           # [64, 4, 26, 163, 255]

>>> bytelist[2]                     # 26 
1 đều dài 8 bit.

Đã trả lời ngày 1 tháng 6 năm 2021 lúc 8:23Jun 1, 2021 at 8:23

Một câu hỏi cũ mà tôi tình cờ tìm thấy một giải pháp hiện có. Cuộn của riêng tôi và nghĩ rằng tôi sẽ chia sẻ vì nó cho phép bạn tạo số nguyên 32 bit từ danh sách các byte, chỉ định một bù.

def bytes_to_int(bList, offset):
    r = 0
    for i in range(4):
        d = 32 - ((i + 1) * 8)
        r += bList[offset + i] << d
    return r

Đã trả lời ngày 19 tháng 5 lúc 14:12May 19 at 14:12

Hướng dẫn how do you convert bytes to numbers in python? - làm thế nào để bạn chuyển đổi byte thành số trong python?

Có bao nhiêu byte là một con số trong Python?

Để an toàn, Python phân bổ một số byte cố định của không gian trong bộ nhớ cho mỗi biến của một loại số nguyên thông thường, được gọi là int in python. Thông thường, một số nguyên chiếm bốn byte, hoặc 32 bit.four bytes, or 32 bits.

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. 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.

Tôi có thể làm gì với byte trong Python?

Hàm python byte () Nó có thể chuyển đổi các đối tượng thành các đối tượng byte hoặc tạo đối tượng byte trống của kích thước được chỉ định.Sự khác biệt giữa byte () và bytearray () là byte () trả về một đối tượng không thể sửa đổi và bytearray () trả về một đối tượng có thể được sửa đổi.convert objects into bytes objects, or create empty bytes object of the specified size. The difference between bytes() and bytearray() is that bytes() returns an object that cannot be modified, and bytearray() returns an object that can be modified.

Làm cách nào để giải mã dữ liệu byte?

Các cách khác nhau để chuyển đổi byte thành chuỗi trong Python:..
Sử dụng phương thức decode () ..
Sử dụng hàm str () ..
Sử dụng codec.Phương thức giải mã () ..
Sử dụng map () mà không sử dụng tiền tố B ..
Sử dụng gấu trúc để chuyển đổi byte thành chuỗi ..