Я пытаюсь прочитать шестнадцатеричное значение, подобное этому из файла, и выполнить некоторые операции.Операции с шестнадцатеричным файлом Python
REVA: XA0 DID0, DF= Q8B8, Rev: 0.0, UT: 0xd2d32103800600 : Cbos: 18 (0x0)
Я пытаюсь прочитать UT и выполнить следующие операции над ним.
x=ut & 0xFFFFFFFF
y=(ut>>32) & 0xFFFFFF
Мой код ценам ниже
f=open('utinfo', 'rb')
for line in f:
if line.startswith("REVA"):
ut=line.split()[8] #grabs the value 0xd2d32103800600
x = ut & 0xFFFFFFFF
y = (ut>>32) & 0xFFFFFF
Я получаю ошибку, что это-
x = ut & 0xFFFFFFFF
TypeError: unsupported operand type(s) for &: 'str' and 'long'
Так что я читаю значение в виде строки, но я думал, чтение файла, как гб еще не вызвало бы эту проблему, она считывает значение как строку.
Btw, это работает в питона
>>?ut=0x2d32103800600
>>? x=ut & 0xFFFFFFFF
>>?x
0x3800600L
>>? y= ut>>32 & 0xFFFFFF
>>?y
>>?0x0L
Как это исправить? Большое спасибо за ваше время. & help.
Вы можете наложить строку на long 'long (float (ut))', а затем выполнить побитовый оператор – karthikr