2013-11-29 3 views
0

Я новичок в python и действительно нуждаюсь в некоторой помощи. Я открываю файл в двоичном формате и ищу конкретное смещение, а затем считывая первые пару байтов в смещении. Я изо всех сил пытаюсь понять, как я могу еще больше изолировать значение, которое мне нужно, в возвращаемой строке. Таким образом, я могу правильно получить целочисленное значение 21229 из тестового файла (это шестнадцатеричное значение 0x52ed), но мне нужно сделать еще один шаг и разделить шестнадцатеричный только на первые два бита (0x52), так что я получаю целочисленное значение 84, которое является значением, которое я получил после. Код ниже. Большое спасибо за любую помощь, оказаннуюPython pop и hex values ​​

offset=0x49f2 
from array import * 
import os,sys 
def emptyarray(data): 
    while len(data) > 0: 
     data.pop() 

bo=sys.byteorder 
filename="c:\\test\test.fil" 
fp=open (filename,"rb") 
data=array("h") 
fp.seek(offset,0) 
if bo=="big": 
    data.byteswap() 
data.fromfile(fp,1) 
value=data.pop() 
print value 
hexvalue=hex(value) 
print hexvalue 
+0

Что случилось с этим кодом? – aIKid

+0

Я ничего не думаю о себе @alKid. Это работает, но я не знаю достаточно питона, чтобы получить то, что мне нужно; который, по сути, нарезает окончательное шестнадцатеричное значение в два, поэтому я остаюсь с 0x52 (который в целочисленном размере, который мне нужно использовать). – user2377057

ответ

1

Чтобы перейти от 0x52ed к 0x52 можно сдвинуть вправо на 8 бит:

>>> hex(0x52ed >> 8) 
'0x52' 
+0

Прохладный .. Это именно то, что мне нужно. Очень большое спасибо @Janne Karila – user2377057