In python, how do I convert the ascii hex string to an internal binary string?

In python, how do I convert an ASCII hex string to a binary string?

Example:

01000001B8000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435362021222324

Required to convert to binary string. ( 0A needs to be converted to 1010 , not ASCII bit 1000001 , which is 65 )

edit: The "raw binary" in the "raw internal binary" line has been changed for clarity.

+8
python
source share
5 answers
 import base64 data = base64.b16decode("01000001B8000102030405") 
+13
source share

Is this what you are looking for?

 hex_string = '0A' '{0:b}'.format(int(hex_string, 16)) # returns '1010' 

or

 ''.join('{0:04b}'.format(int(c, 16)) for c in hex_string) 
+9
source share

You probably need the .decode('hex') string method (Python 2.x).

 data= ("01000001B8000102030405060708090A0B0C0D0E0F10111213141516" "1718191A1B1C1D1E1F202122232425262728292A2B" "2C2D2E2F303132333435362021222324") data.decode('hex') 

Otherwise, you can use base64.b16decode , but you can specify True for the second parameter ( casefold ) if your input contains lowercase hexadecimal digits from A to F.

+7
source share

I'm not quite sure what you mean by "binary string". If you mean a string storing binary data, you can use the binascii module .

 >>> 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 !"#$' 

However, if you really need a string containing many "0" and "1" , you need to go further:

 >>> "".join("{:08b}".format(ord(i)) for i in binary) '0000000100000000000000000000000110111000000000000000000100000010000000110000010000000101000001100000011100001000000010010000101000001011000011000000110100001110000011110001000000010001000100100001001100010100000101010001011000010111000110000001100100011010000110110001110000011101000111100001111100100000001000010010001000100011001001000010010100100110001001110010100000101001001010100010101100101100001011010010111000101111001100000011000100110010001100110011010000110101001101100010000000100001001000100010001100100100' 
+2
source share

An easy way to do what you are trying to do ... convert your string to hexadecimal decimal, and then use the built-in bin function to convert it to binary.

 dec_string = int(your_string, 16) #cast as int bin_string = bin(dec_string) #convert to binary 
+1
source share

All Articles