Двоичные данные в шестнадцатеричном формате в Python - PullRequest
0 голосов
/ 31 октября 2019
binaryValue= '000000000000000011110011'

Я хочу разделить 8 символов и преобразовать эти 8 бит в шестнадцатеричный формат, как указано выше, будет иметь значение '0x000x000xf3'.

Я хочу, чтобы это значение было напечатано через python как '\x00\x00\xf3'. Пожалуйста, дайте мне знать, как добиться этого с помощью Python. И, пожалуйста, дайте мне знать, что произойдет, если после каждой строки binaryValue будет '\n'. Как этого добиться тоже.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Ну, вы можете сделать это:

b = '000000000000000011110011'
h = '\\' + '\\'.join('x' + hex(int(b[i:i + 8], 2)).split('x')[1].zfill(2) for i in range(0, len(b), 8))
print(h) # This will print \x00\x00\xf3

Разбить его на более длинный цикл, чтобы сделать его более читабельным:

b = '000000000000000011110011'
h = ''
for i in range(0, len(b), 8): # Same as you did
    temp = hex(int(b[i:i + 8], 2)) # Same as you did
    temp = temp.split('x')[1] # to get the last part after x
    temp = temp.zfill(2) # add leading zeros if needed
    h += '\\x' + temp # adding the \x back
print(h) # This will print \x00\x00\xf3

Я предполагаю, что вы должны использовать это какUnicode и / или преобразовать его во что-то еще? Если это так, см. Ответы здесь: Python: unescape "\ xXX"

0 голосов
/ 31 октября 2019

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

inputStr = '000000000000000011110011'
n = 8
listOfBytes = [inputStr[i:i+n] for i in range(0, len(inputStr), n)]
for i in listOfBytes: 
    print(hex(int(i, 2)))

output _:

0x0 0x0 0xf3

...