ファイルからこのような16進値を読み取って、いくつかの操作を実行しようとしています。
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'
したがって、値を文字列として読み取っていますが、ファイルを rb として読み取ってもこの問題は発生しないと思いましたが、値を文字列として読み取っています。
ところで、これはPythonで動作します
>>?ut=0x2d32103800600
>>? x=ut & 0xFFFFFFFF
>>?x
0x3800600L
>>? y= ut>>32 & 0xFFFFFF
>>?y
>>?0x0L
これを修正するにはどうすればよいですか? お時間とご協力ありがとうございます。