2012-02-24 2 views
0

Я пытаюсь декомпилировать код asm для python. Я столкнулся со следующей строкойmovsx in python

movsx eax, byte ptr [edi] 

Я ищу способ сделать подписанное расширение байта в python. В настоящее время я использую bytearray для получения отдельных байтов. После получения отдельных байтов мне нужно сделать подписанное расширение для каждого из них.

+1

Я думаю, что информация отсутствует. Python не имеет целочисленных типов данных, поэтому вам не требуется «подписанное расширение». Если вы используете что-то вроде модуля 'array' для массивов, которые имеют целочисленные значения sizef, подписанное расширение будет происходить автоматически при необходимости. –

ответ

1

Я использую следующий фрагмент кода:

# sign extend b low bits in x 
# from "Bit Twiddling Hacks" 
def SIGNEXT(x, b): 
    m = 1 << (b - 1) 
    x = x & ((1 << b) - 1) 
    return (x^m) - m 

В вашем случае б будет 8. Вы можете, вероятно, предвычислять маски для немного SpeedUp.

Указанный взлом можно найти here.

 Смежные вопросы

  • Нет связанных вопросов^_^