13
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.
Trong Python, làm thế nào để chuyển đổi chuỗi ascii hex thành chuỗi nhị phân?
Example:
01000001B8000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1F
Cần được chuyển đổi thành một chuỗi nhị phân. .
Chỉnh sửa: Đã thay đổi "nhị phân thô" được đề cập thành chuỗi "nhị phân nội bộ thô" để rõ ràng hơn.
Đã hỏi ngày 9 tháng 12 năm 2011 lúc 12:25Dec 9, 2011 at 12:25
Nấm nấm mặt trăngLunar Mushrooms
7.83016 huy hiệu vàng62 Huy hiệu bạc87 Huy hiệu đồng16 gold badges62 silver badges87 bronze badges
2
import base64
data = base64.b16decode["01000001B8000102030405"]
Đã trả lời ngày 9 tháng 12 năm 2011 lúc 12:35Dec 9, 2011 at 12:35
Đây có phải là những gì bạn đang tìm kiếm?
hex_string = '0A'
'{0:b}'.format[int[hex_string, 16]]
# returns '1010'
hoặc
''.join['{0:04b}'.format[int[c, 16]] for c in hex_string]
Đã trả lời ngày 9 tháng 12 năm 2011 lúc 12:29Dec 9, 2011 at 12:29
Eumiroeumiroeumiro
199K34 Huy hiệu vàng294 Huy hiệu bạc259 Huy hiệu Đồng34 gold badges294 silver badges259 bronze badges
4
Bạn có thể cần phương pháp chuỗi
hex_string = '0A'
'{0:b}'.format[int[hex_string, 16]]
# returns '1010'
1 [Python 2.x].data= ["01000001B8000102030405060708090A0B0C0D0E0F10111213141516"
"1718191A1B1C1D1E1F202122232425262728292A2B"
"2C2D2E2F303132333435362021222324"]
data.decode['hex']
Mặt khác, bạn có thể sử dụng
hex_string = '0A'
'{0:b}'.format[int[hex_string, 16]]
# returns '1010'
2, nhưng bạn có thể muốn cung cấp một đúng cho tham số thứ hai [hex_string = '0A'
'{0:b}'.format[int[hex_string, 16]]
# returns '1010'
3] nếu đầu vào của bạn chứa các chữ số HEX chữ thường A đến F.Đã trả lời ngày 24 tháng 12 năm 2011 lúc 22:38Dec 24, 2011 at 22:38
Tzottzottzot
89.4K29 Huy hiệu vàng138 Huy hiệu bạc201 Huy hiệu đồng29 gold badges138 silver badges201 bronze badges
Tôi không hoàn toàn chắc chắn ý bạn là "chuỗi nhị phân". Nếu bạn có nghĩa là một chuỗi lưu trữ dữ liệu nhị phân, bạn có thể sử dụng mô -đun
hex_string = '0A'
'{0:b}'.format[int[hex_string, 16]]
# returns '1010'
4.>>> data = "01000001B8000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435362021222324"
>>> import binascii
>>> binary = binascii.a2b_hex[data]
>>> binary
'\x01\x00\x00\x01\xb8\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'[]*+,-./0123456 !"#$'
Tuy nhiên, nếu bạn thực sự muốn một chuỗi chứa nhiều
hex_string = '0A'
'{0:b}'.format[int[hex_string, 16]]
# returns '1010'
5 và hex_string = '0A'
'{0:b}'.format[int[hex_string, 16]]
# returns '1010'
6, bạn cần phải đi thêm một giai đoạn:>>> "".join["{:08b}".format[ord[i]] for i in binary]
'0000000100000000000000000000000110111000000000000000000100000010000000110000010000000101000001100000011100001000000010010000101000001011000011000000110100001110000011110001000000010001000100100001001100010100000101010001011000010111000110000001100100011010000110110001110000011101000111100001111100100000001000010010001000100011001001000010010100100110001001110010100000101001001010100010101100101100001011010010111000101111001100000011000100110010001100110011010000110101001101100010000000100001001000100010001100100100'
Đã trả lời ngày 9 tháng 12 năm 2011 lúc 12:52Dec 9, 2011 at 12:52
David Webbdavid WebbDavid Webb
187K57 Huy hiệu vàng308 Huy hiệu bạc298 Huy hiệu Đồng57 gold badges308 silver badges298 bronze badges
Một cách dễ dàng để thực hiện những gì bạn đang cố gắng làm ... Chuyển đổi chuỗi của bạn thành thập phân hex sau đó sử dụng hàm bin tích hợp để chuyển đổi nó thành nhị phân.
dec_string = int[your_string, 16] #cast as int
bin_string = bin[dec_string] #convert to binary
Đã trả lời ngày 23 tháng 3 năm 2015 lúc 20:41Mar 23, 2015 at 20:41