Hướng dẫn byte string to binary python - chuỗi byte sang python nhị phân

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 byte string to binary python - chuỗi byte sang python nhị phân

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

6.9988 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 byte string to binary python - chuỗi byte sang python nhị phân

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 byte string to binary python - chuỗi byte sang python nhị phân

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 byte string to binary python - chuỗi byte sang python nhị phân

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 byte string to binary python - chuỗi byte sang python nhị phân

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 byte string to binary python - chuỗi byte sang python nhị phân

AjpajpAJP

24.9K20 Huy hiệu vàng83 Huy hiệu bạc119 Huy hiệu đồng20 gold badges83 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.5075 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 byte string to binary python - chuỗi byte sang python nhị phân

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

Làm cách nào để chuyển đổi chuỗi thành nhị phân trong Python?

Để chuyển đổi một chuỗi thành nhị phân, trước tiên chúng tôi nối các giá trị ASCII của chuỗi thành một danh sách (l) bằng hàm ord (_string). Hàm này cho giá trị ASCII của chuỗi (tức là, ord (h) = 72, ord (e) = 101). Sau đó, từ danh sách các giá trị ASCII, chúng ta có thể chuyển đổi chúng thành nhị phân bằng bin (_integer).append the string's individual ASCII values to a list ( l ) using the ord(_string) function. This function gives the ASCII value of the string (i.e., ord(H) = 72 , ord(e) = 101). Then, from the list of ASCII values we can convert them to binary using bin(_integer) .

Làm thế nào để bạn chuyển đổi một chuỗi thành nhị phân?

Ý tưởng là trước tiên để tính độ dài của chuỗi là n và sau đó chạy một vòng n lần.Trong mỗi cửa hàng lặp ASCII giá trị của ký tự trong Val biến và sau đó chuyển đổi nó thành số nhị phân và lưu trữ kết quả vào mảng cuối cùng in mảng theo thứ tự ngược lại.

Làm thế nào để bạn chuyển đổi dữ liệu thành nhị phân trong Python?

Trong Python, bạn chỉ có thể sử dụng hàm bin () để chuyển đổi từ giá trị thập phân sang giá trị nhị phân tương ứng của nó.Và tương tự, hàm int () để chuyển đổi một nhị phân thành giá trị thập phân của nó.Hàm int () lấy đối số thứ hai là cơ sở của số sẽ được chuyển đổi, đó là 2 trong trường hợp số nhị phân.use the bin() function to convert from a decimal value to its corresponding binary value. And similarly, the int() function to convert a binary to its decimal value. The int() function takes as second argument the base of the number to be converted, which is 2 in case of binary numbers.