Hướng dẫn convert bytes to bits python - chuyển đổi byte thành bit python

42

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang làm việc với Python3.2. Tôi cần lấy một luồng hex làm đầu vào và phân tích nó ở cấp độ bit. Vì vậy, tôi đã sử dụng

>>> c.bin[2:]
'11111111'
8

Để chuyển đổi chuỗi thành byte thực tế. Bây giờ làm cách nào để chuyển đổi các byte này thành bit?

Hỏi ngày 11 tháng 1 năm 2012 lúc 7:23Jan 11, 2012 at 7:23

Hướng dẫn convert bytes to bits python - chuyển đổi byte thành bit python

3

Một cách khác để làm điều này là bằng cách sử dụng mô -đun

>>> c.bin[2:]
'11111111'
9:

>>> from bitstring import BitArray
>>> input_str = '0xff'
>>> c = BitArray(hex=input_str)
>>> c.bin
'0b11111111'

Và nếu bạn cần loại bỏ

>>> c.uint
255
>>> c.invert()
>>> c.bin[2:]
'00000000'
0 hàng đầu:

>>> c.bin[2:]
'11111111'

Mô -đun

>>> c.bin[2:]
'11111111'
9 không phải là một yêu cầu, như câu trả lời của Jcollado cho thấy, nhưng nó có rất nhiều phương pháp hiệu suất để biến đầu vào thành bit và thao tác chúng. Bạn có thể tìm thấy điều này tiện dụng này (hoặc không), ví dụ:jcollado's answer shows, but it has lots of performant methods for turning input into bits and manipulating them. You might find this handy (or not), for example:

>>> c.uint
255
>>> c.invert()
>>> c.bin[2:]
'00000000'

etc.

EPOC

7,0088 Huy hiệu vàng60 Huy hiệu bạc65 Huy hiệu Đồng8 gold badges60 silver badges65 bronze badges

Đã trả lời ngày 11 tháng 1 năm 2012 lúc 8:06Jan 11, 2012 at 8:06

Alex Reynoldsalex ReynoldAlex Reynolds

95K53 Huy hiệu vàng235 Huy hiệu bạc341 Huy hiệu Đồng53 gold badges235 silver badges341 bronze badges

1

Còn một cái gì đó như thế này thì sao?

>>> bin(int('ff', base=16))
'0b11111111'

Điều này sẽ chuyển đổi chuỗi thập lục phân mà bạn có thành một số nguyên và số nguyên đó thành một chuỗi trong đó mỗi byte được đặt thành 0/1 tùy thuộc vào giá trị bit của số nguyên.

Như đã chỉ ra bằng một bình luận, nếu bạn cần thoát khỏi tiền tố

>>> c.uint
255
>>> c.invert()
>>> c.bin[2:]
'00000000'
0, bạn có thể làm theo cách này:

>>> bin(int('ff', base=16)).lstrip('0b')
'11111111'

Hoặc theo cách này:

>>> bin(int('ff', base=16))[2:]
'11111111'

Hướng dẫn convert bytes to bits python - chuyển đổi byte thành bit python

wjandrea

24.9k8 Huy hiệu vàng53 Huy hiệu bạc73 Huy hiệu đồng8 gold badges53 silver badges73 bronze badges

Đã trả lời ngày 11 tháng 1 năm 2012 lúc 7:31Jan 11, 2012 at 7:31

Jcolladojcolladojcollado

38.3k8 Huy hiệu vàng102 Huy hiệu bạc133 Huy hiệu đồng8 gold badges102 silver badges133 bronze badges

4

Hoạt động nhanh hơn nhiều khi bạn làm việc ở cấp số nguyên. Cụ thể, chuyển đổi thành một chuỗi như đề xuất ở đây thực sự chậm.

Nếu bạn chỉ muốn bit 7 và 8, hãy sử dụng ví dụ:

val = (byte >> 6) & 3

.

Chúng có thể dễ dàng được dịch thành các hoạt động CPU đơn giản là siêu nhanh.

Đã trả lời ngày 11 tháng 1 năm 2012 lúc 8:04Jan 11, 2012 at 8:04

Hướng dẫn convert bytes to bits python - chuyển đổi byte thành bit python

0

Sử dụng cú pháp chuỗi định dạng Python

>>> mybyte = bytes.fromhex("0F") # create my byte using a hex string
>>> binary_string = "{:08b}".format(int(mybyte.hex(),16))
>>> print(binary_string)
00001111

Dòng thứ hai là nơi phép thuật xảy ra. Tất cả các đối tượng byte có hàm

>>> c.uint
255
>>> c.invert()
>>> c.bin[2:]
'00000000'
4, trả về chuỗi hex. Sử dụng chuỗi hex này, chúng tôi chuyển đổi nó thành một số nguyên, nói với hàm
>>> c.uint
255
>>> c.invert()
>>> c.bin[2:]
'00000000'
5 rằng đó là chuỗi 16 cơ sở (vì Hex là cơ sở 16). Sau đó, chúng tôi áp dụng định dạng cho số nguyên đó để nó hiển thị dưới dạng chuỗi nhị phân.
>>> c.uint
255
>>> c.invert()
>>> c.bin[2:]
'00000000'
6 là nơi ma thuật thực sự xảy ra. Nó đang sử dụng đặc tả định dạng ngôn ngữ mini
>>> c.uint
255
>>> c.invert()
>>> c.bin[2:]
'00000000'
7. Cụ thể, nó sử dụng các phần
>>> c.uint
255
>>> c.invert()
>>> c.bin[2:]
'00000000'
8 và ____29 của cú pháp định dạng_spec.
>>> bin(int('ff', base=16))
'0b11111111'
0 đặt
>>> c.uint
255
>>> c.invert()
>>> c.bin[2:]
'00000000'
8 thành 8, đó là cách chúng tôi nhận được phần đệm 0000 đẹp và
>>> bin(int('ff', base=16))
'0b11111111'
2 đặt loại thành nhị phân.

Tôi thích phương pháp này hơn phương thức

>>> bin(int('ff', base=16))
'0b11111111'
3 vì sử dụng chuỗi định dạng mang lại sự linh hoạt hơn rất nhiều.

Đã trả lời ngày 14 tháng 7 năm 2018 lúc 1:17Jul 14, 2018 at 1:17

ZencodrzencodrZenCodr

1.1268 huy hiệu bạc12 Huy hiệu đồng8 silver badges12 bronze badges

1

Tôi nghĩ rằng đơn giản nhất sẽ được sử dụng

>>> bin(int('ff', base=16))
'0b11111111'
4 ở đây. Ví dụ: bạn có thể đọc một tệp dưới dạng byte và sau đó mở rộng nó thành các bit dễ dàng như sau:

Bytes = numpy.fromfile(filename, dtype = "uint8")
Bits = numpy.unpackbits(Bytes)

Đã trả lời ngày 10 tháng 5 năm 2015 lúc 23:27May 10, 2015 at 23:27

Hướng dẫn convert bytes to bits python - chuyển đổi byte thành bit python

Mikhail vmikhail vMikhail V

1.37513 Huy hiệu bạc23 Huy hiệu đồng13 silver badges23 bronze badges

0

Đây là cách thực hiện nó bằng cách sử dụng

>>> bin(int('ff', base=16))
'0b11111111'
5

print "bin_signedDate : ", ''.join(format(x, '08b') for x in bytevector)

Điều quan trọng là 08B. Điều đó có nghĩa là nó sẽ là tối đa 8 số 0 hàng đầu được thêm vào để hoàn thành một byte. Nếu bạn không chỉ định điều này thì định dạng sẽ chỉ có độ dài bit thay đổi cho mỗi byte được chuyển đổi.08b . That means it will be a maximum of 8 leading zeros be appended to complete a byte. If you don't specify this then the format will just have a variable bit length for each converted byte.

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

Hướng dẫn convert bytes to bits python - chuyển đổi byte thành bit python

JonialejonialeJoniale

4664 Huy hiệu bạc15 Huy hiệu Đồng4 silver badges15 bronze badges

0

>>> c.bin[2:]
'11111111'
0

Sẽ cho:

>>> c.bin[2:]
'11111111'
1

Đã trả lời ngày 13 tháng 12 năm 2020 lúc 10:52Dec 13, 2020 at 10:52

Hướng dẫn convert bytes to bits python - chuyển đổi byte thành bit python

AjpajpAJP

25K20 Huy hiệu vàng84 Huy hiệu bạc119 Huy hiệu đồng20 gold badges84 silver badges119 bronze badges

Đến nhị phân:

>>> c.bin[2:]
'11111111'
2

Đã trả lời ngày 11 tháng 1 năm 2012 lúc 8:20Jan 11, 2012 at 8:20

FerguzzferguzzFerguzz

5.5175 Huy hiệu vàng31 Huy hiệu bạc41 Huy hiệu đồng5 gold badges31 silver badges41 bronze badges

1

Sử dụng

>>> bin(int('ff', base=16))
'0b11111111'
6 Khi đọc BYTES đọc:

>>> c.bin[2:]
'11111111'
3

Hoặc

Sử dụng

>>> bin(int('ff', base=16))
'0b11111111'
7:

>>> c.bin[2:]
'11111111'
4

Đã trả lời ngày 29 tháng 8 năm 2017 lúc 0:56Aug 29, 2017 at 0:56

Hướng dẫn convert bytes to bits python - chuyển đổi byte thành bit python

Jacob Valentajacob ValentaJacob Valenta

6.5106 Huy hiệu vàng29 Huy hiệu bạc42 Huy hiệu Đồng6 gold badges29 silver badges42 bronze badges

Các câu trả lời khác ở đây cung cấp các bit theo thứ tự lớn (

>>> bin(int('ff', base=16))
'0b11111111'
8 trở thành
>>> bin(int('ff', base=16))
'0b11111111'
9)

Trong trường hợp bạn quan tâm đến thứ tự các bit nhỏ, rất hữu ích trong nhiều trường hợp, như các đại diện chung của Bignums, v.v. - đây là một đoạn trích cho điều đó:

>>> c.bin[2:]
'11111111'
5

Và cho hướng khác:

>>> c.bin[2:]
'11111111'
6

Đã trả lời ngày 21 tháng 11 năm 2017 lúc 15:57Nov 21, 2017 at 15:57

Yairchuyairchuyairchu

22.6K7 Huy hiệu vàng67 Huy hiệu bạc106 Huy hiệu Đồng7 gold badges67 silver badges106 bronze badges

Một chức năng một dòng để chuyển đổi byte (không phải chuỗi) thành danh sách bit. Không có vấn đề về Endnians khi nguồn từ đầu đọc/người đọc byte đến người đọc/nhà văn byte khác, chỉ khi nguồn và mục tiêu là người đọc bit và nhà văn bit.

>>> c.bin[2:]
'11111111'
7

Đã trả lời ngày 25 tháng 3 lúc 12:32Mar 25 at 12:32

Bytearray có nghĩa là gì trong Python?

Phương thức python bytearray () Phương thức bytearray () trả về một đối tượng bytearray, là một mảng của các byte được cho. Lớp bytearray là một chuỗi các số nguyên có thể thay đổi trong phạm vi từ 0 đến 256.an array of the given bytes. The bytearray class is a mutable sequence of integers in the range of 0 to 256.

Byte () làm gì trong Python?

Hàm python byte () hàm byte () trả về đối tượng 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.returns a bytes object. It can convert objects into bytes objects, or create empty bytes object of the specified size.

Làm thế nào để bạn chuyển đổi byte thành nhị phân trong Python?

Viết byte vào tệp trong Python Ví dụ 1: Mở tệp ở chế độ ghi nhị phân và sau đó chỉ định nội dung để ghi dưới dạng byte.Tiếp theo, sử dụng chức năng ghi để viết nội dung byte vào tệp nhị phân.use the write function to write the byte contents to a binary file.

Làm cách nào để chuyển đổi chuỗi thành bit trong python?

Phương thức số 1: Sử dụng Định dạng Jop () + Ord () + () Sự kết hợp của các hàm trên có thể được sử dụng để thực hiện tác vụ cụ thể này.Hàm ord chuyển đổi ký tự thành tương đương ASCII, định dạng chuyển đổi số này thành số nhị phân và tham gia được sử dụng để nối từng ký tự được chuyển đổi để tạo thành một chuỗi.Using join() + ord() + format() The combination of above functions can be used to perform this particular task. The ord function converts the character to it's ASCII equivalent, format converts this to binary number and join is used to join each converted character to form a string.