我试图从一个文件中读取像这样的十六进制值并执行一些操作。在
REVA: XA0 DID0, DF= Q8B8, Rev: 0.0, UT: 0xd2d32103800600 : Cbos: 18 (0x0)
我正在尝试读取UT并对其执行以下操作。在
^{pr2}$我的代码如下-
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
我怎么解决这个问题?非常感谢您的时间和帮助。在
更新:将基数16添加到长转换中!在
您正在对不同的数据类型执行
&
操作。在执行此操作之前,您必须将readstring
转换为long
数据类型,如下所示:之后,您可以继续执行代码:
^{pr2}$完整代码:
希望这有帮助!在
相关问题 更多 >
编程相关推荐