簡體   English   中英

Python File Hex操作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM