我希望在Python 2.7.13中完成以下操作:
- 将int值转换为16进制(
58829405413336430
应变为d101085402656e
) - 向创建的16进制添加“payload”(简单字符串,如c1234)
- 将纯16进制写入文件
我的代码目前看起来是这样的:
mime=58829405413336430
payload="c9999"
fw_file=open('testhex', 'wb')
fw_file.write("%x" % mime)
fw_file.write(str(payload).encode("hex"))
fw_file.close()
我得到了以下文件(在Debian上使用xxd
):
xxd HACKEDTOGETHER
00000000: 6431 3031 3038 3534 3032 3635 3665 3633 d101085402656e63
00000010: 3339 3339 3339 3339 39393939
这不是我需要的。我需要一个看起来像这样的文件:
xxd WORKING
00000000: d101 0854 0265 6e63 3939 3939 ...T.enc9999
以下是我的理解:
“%x”%mime将我的int转换为十六进制,但它被写为字符串。 encode正确执行了此操作,但无法处理整数。我如何规避此行为并将“纯”十六进制写入文件?如果无法在Python 2中执行此操作,则可以使用Python 3。
作为我在StackOverflow上的第一个问题,请告诉我是否应该采取任何不同的做法。