Skip to main content
 首页 » 编程设计

python之如何从文件中读取两位数字,将其与 (0x91) 异或并打印到屏幕

2025年05月04日17del

我尝试读取以十六进制编写的字节文件,例如:(909090) 在汇编中是 nop nop nop,我想将每两个数字作为一个字节与 0x91 异或。

如何打印十六进制值?现在它只打印没有意义的数字。

一般来说,我想为我的汇编代码构建一个打包器。

def add_prefix(a): 
    a = str(a) 
    a = '0x' + a 
    a = int(a, 16) 
    return a 
 
fr = open('C:\code.txt', 'r') 
word = '' 
b = '' 
for line in fr: 
    b += line 
 
count = 0 
 
for char in b: 
    char = str(char) 
    word += char 
    if count%2 == 0: 
        word = int(str(add_prefix(word)^91), 16) 
        print word 
        word = "" 

请您参考如下方法:

所需的算法非常简单:

  1. 一次读两个字
  2. 将这些转换为整数
  3. 将整数与掩码 (0x91) 异或
  4. 将整数转换回十六进制字符串(前导零)

with open(file_path, 'r') as fp: 
    result = [] 
    while True: 
        # 1. 
        s = fp.read(2) 
        if not s: 
            break 
 
        # 2.  
        number = int(s, 16) # No need for '0x' prefix! 
 
        # 3. 
        number = number ^ 0x91  # '91' needs '0x' prefix! 
 
        # 4. 
        result.append(format(number, '02x')) 
 
print ''.join(result)