首页 > 解决方案 > 在Python中编码十六进制“40”我做错了什么?

问题描述

我遇到了一个二进制文件(我猜)我尝试使用我的脚本生成,所以也许我做错了,但到目前为止它有效。现在我被卡住了,不觉得我能理解(并且作为二进制文件的菜鸟,无法正确命名问题以谷歌任何答案)..

我将“目标文件”作为二进制文件读取,我发现它就像许多“\x00”,中间有几个数值(如“\x05”)。

我做的是这样的:

def myEncode(a):
    if   a == 2: A = "\x02"
    elif a == 5: A = "\x05"
    return(A)

line = "\x00\x00\x01" + myEncode(5) + "\x00"
phrase = bytearray(line.encode("utf-8"))
f = open("outfile", "ab")
f. write(phrase)
f.close()
  1. 如果我可以使用 hex() 将这个整数 5 转换为“\x05”,这将对我有很大帮助,但我得到的是“0x5”。其中,以这种方式添加到文件中是行不通的。我真的需要(出于某种原因)让它看起来像 "\x" 和 2 位数字

  2. 更重要的是:我需要添加十进制 128(十六进制“\x80”)和更大。由于我无法理解的原因,它总是插入“\xc2\x80”。当我使用原始程序创建相同的文件时,它只添加了这个“\x80”,所以我想它必须以某种方式工作,但我不知道为什么..

感谢您提供任何建议、提示或方向。

标签: pythonhexnsutf8encoding

解决方案


推荐阅读