将长十六进制字符串从END开始分成8个字节段

问题描述 投票:0回答:1

如果我运行此代码,我会从头开始获得片段。我需要此代码用于小端字节序目的,因此我必须颠倒顺序,因为我将在堆栈上推送字节,而末尾的最后一个字节实际上是第一个。顺序是正确的。问题是,如果我将它们按 8 个字节分段,它会从头开始。最后一段不是 8 个字节,而是 3 个字节,所以我想从末尾开始。有什么想法吗?

import sys
from textwrap import wrap
string = sys.argv[1]
data = string.encode().hex()
value=bytes.fromhex(data)
value=value[::-1]
s = bytes.hex(value)
#print(s)
print(wrap(s, width=8))

要运行它,只需

python3 this_script.py "this is a long string"

目前,输出如下所示:

['676e6972', '74732067', '6e6f6c20', '61207369', '20736968', '74']

我希望它从最后开始,从 74 开始。 这是我希望输出的样子。

['67', '6e697274', '7320676e', '6f6c2061', '20736920', '73696874']
python
1个回答
0
投票

.hex()
使用正确的参数为您拆分它们。

string = 'this is a long string'
value = string.encode()[::-1].hex(' ', 4).split()
print(value)

输出:

['67', '6e697274', '7320676e', '6f6c2061', '20736920', '73696874']
© www.soinside.com 2019 - 2024. All rights reserved.