[英]Python File Hex operations
我試圖從文件中讀取這樣的十六進制值並執行一些操作。
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
我該如何解決? 非常感謝您的時間和幫助。
更新:添加16為長轉換!
您正在對不同的數據類型執行&
操作。 在此之前,您必須將讀取的string
轉換為如下所示的long
數據類型:
# at this moment ut data type is string
ut=line.split()[8] #grabs the value 0xd2d32103800600
# convert string to long data type, set base 16
ut = long(ut, 16)
之后,您可以繼續執行代碼:
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
ut=long(ut,16)
x = ut & 0xFFFFFFFF
y = (ut>>32) & 0xFFFFFF
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.