You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

小端序场景下如何从末尾分割长十六进制字符串为8字节段?

解决小端序处理后的十六进制字符串反向分段问题

问题分析

你需要将字符串转十六进制、反转字节序后,从末尾开始按8个十六进制字符(对应4字节)分段,最前面不足8个的单独作为一组,得到指定顺序的列表。

修改后的代码

方法一:直接计算分段

import sys

string = sys.argv[1]
# 字符串编码为字节后转十六进制
data_hex = string.encode().hex()
# 反转字节序
reversed_bytes = bytes.fromhex(data_hex)[::-1]
# 转回十六进制字符串
s = reversed_bytes.hex()

# 实现从末尾开始的8字符分段逻辑
total_length = len(s)
remainder = total_length % 8
parts = []

# 先处理开头不足8字符的部分(如果存在)
if remainder != 0:
    parts.append(s[:remainder])

# 从剩余位置开始,每次取8个字符直到末尾
for i in range(remainder, total_length, 8):
    parts.append(s[i:i+8])

print(parts)

方法二:利用反转简化逻辑

import sys
from textwrap import wrap

string = sys.argv[1]
data_hex = string.encode().hex()
reversed_bytes = bytes.fromhex(data_hex)[::-1]
s = reversed_bytes.hex()

# 通过反转字符串实现反向分段
reversed_s = s[::-1]
wrapped = wrap(reversed_s, 8)
# 还原每个分段的顺序,并反转整个列表
result = [part[::-1] for part in wrapped][::-1]

print(result)

测试验证

运行命令:

python3 this_script.py "this is a long string"

输出结果:

['67', '6e697274', '7320676e', '6f6c2061', '20736920', '73696874']

与期望输出完全一致。

代码说明

  1. 保留原核心流程:字符串编码→转十六进制→反转字节序→转回十六进制字符串。
  2. 分段逻辑修改:
    • 方法一:直接计算总长度与8的余数,先提取开头不足8字符的部分,再依次截取后续8字符段。
    • 方法二:通过反转整个十六进制字符串,用textwrap.wrap正向分段后,再还原每个分段的顺序并反转列表,间接实现从末尾开始的分段效果。

内容的提问来源于stack exchange,提问作者Jason Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:01:15