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

如何在常规字符串中保留ASCII值?整数转高低位消息存储问题

解决整数转高低位十六进制字符串并追加到列表的问题

看起来你是想把整数拆分出的高低位字符,转换成两位十六进制字符串格式(比如整数10的高位0对应'00',低位10对应'0A'),再追加到指定列表末尾对吧?原函数返回的是字符本身的字符串形式(比如'\x00'、'\n'),这确实没法直接满足你的需求,我们可以调整转换逻辑来实现。

方案一:直接修改原函数返回十六进制字符串

我们可以直接在函数里计算高低位的十进制值,然后格式化为两位十六进制字符串:

def int2message(integer):
    # 计算高低位的十进制数值
    high_byte = integer // 256
    low_byte = integer % 256
    # 格式化为两位十六进制字符串(大写,想要小写就把X改成x)
    message_high = f"{high_byte:02X}"
    message_low = f"{low_byte:02X}"
    return [message_high, message_low]

测试一下这个函数:

test_value = int2message(10)
print(test_value)  # 输出 ['00', '0A']

然后把结果追加到你的目标列表里:

# 你的原始列表
original_list = ['0xA2', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 获取高低位十六进制字符串
high_low_pairs = int2message(10)
# 追加到列表末尾
original_list.extend(high_low_pairs)
print(original_list)

运行后就能得到你想要的格式:

['0xA2', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '00', '0A']

方案二:保留原函数,后续处理结果转十六进制

如果你不想修改原函数,也可以在获取字符结果后,通过ord()函数拿到字符的ASCII值,再转成十六进制:

def int2message(integer):
    messageHigh=chr(integer//256)
    messageLow=chr(integer%256)
    return [str(messageHigh), str(messageLow)]

# 处理结果
test_value = int2message(10)
# 把字符转成对应的两位十六进制字符串
high_hex = f"{ord(test_value[0]):02X}"
low_hex = f"{ord(test_value[1]):02X}"

# 追加到列表
original_list = ['0xA2', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
original_list.extend([high_hex, low_hex])
print(original_list)

这个方案也能得到和上面一样的结果,看你更习惯哪种实现方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:11:02