Я хочу преобразовать 1fd93d1cf1f13d0d в 00011111 11011001 00111101 00011100 11110001 11110001 00111101 00001101 - PullRequest
0 голосов
/ 05 октября 2018

Я использовал следующую функцию:

bin(int('1fd93d1cf1f13d0d', 16)) 

, но я продолжаю получать

0b1111111011001001111010001110011110001111100010011110100001101 

в качестве вывода.

Когда я использую .zfill(64), он становится

00b1111111011001001111010001110011110001111100010011110100001101

Может кто-нибудь сказать, пожалуйста, где я делаю не так.Спасибо

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Вы можете сделать что-то вроде ниже:

# remove 0b at the beginning
>>> bin_value = bin(int('1fd93d1cf1f13d0d',16))[2:]
>>> bin_value
'1111111011001001111010001110011110001111100010011110100001101'
>>> len(bin_value)
61
# add leading 0's to make string length multiple of 8
>>> bin_value = (8 - (len(bin_value) % 8)) * '0' + bin_value
>>> bin_value
'0001111111011001001111010001110011110001111100010011110100001101'
>>> len(bin_value)
64
>>> bytes = [bin_value[i:i+8] for i in range(0, len(bin_value), 8)]
>>> bytes
['00011111', '11011001', '00111101', '00011100', '11110001', '11110001', '00111101', '00001101']
>>> ' '.join(bytes)
'00011111 11011001 00111101 00011100 11110001 11110001 00111101 00001101'
>>> 
0 голосов
/ 05 октября 2018
hex2= 0x1fd93d1cf1f13d0d
spec = '{fill}{align}{width}{type}'.format(fill='0', align='>', width=64, type='b')
bin_representation = format(hex2, spec)
print(bin_representation)

представляет вашу строку в hexformat.hope она решает.отформатируйте в соответствии с желаемым результатом

...