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

如何将客户号转十六进制并填充到整数列表末尾三个元素?

解决客户号转十六进制并填充到列表的问题

嘿,我来帮你搞定这个需求!首先咱们得先理清楚例子里的字节填充逻辑:客户号250000的十六进制是0x3D090,对应到列表里是[00,00,90,d0,03]——这说明咱们需要把客户号拆成三个字节,然后**按小端序(低位字节在前)**填充到列表的最后三个位置(索引2、3、4),前两个位置固定为0。

核心思路

客户号的取值范围是1到250000,转换成十六进制最多是3个字节(250000 = 0x3D090),所以我们可以通过位运算直接提取每个字节:

  • 最低8位(第一个字节):用客户号 & 0xFF获取,放到arr[2]
  • 中间8位:把客户号右移8位后,再用& 0xFF获取,放到arr[3]
  • 最高8位:把客户号右移16位后,再用& 0xFF获取,放到arr[4]

代码实现(整数列表版本)

如果你的列表需要存储整数(比如0对应00,144对应90),可以用这个函数:

def convert_cust_id_to_arr(cust_id):
    # 初始化列表,前两个元素固定为0
    arr = [0, 0, 0, 0, 0]
    # 提取三个字节并填充到对应位置
    arr[2] = cust_id & 0xFF
    arr[3] = (cust_id >> 8) & 0xFF
    arr[4] = (cust_id >> 16) & 0xFF
    return arr

# 测试你的例子
print(convert_cust_id_to_arr(1))      # 输出 [0, 0, 1, 0, 0]
print(convert_cust_id_to_arr(2))      # 输出 [0, 0, 2, 0, 0]
print(convert_cust_id_to_arr(250000)) # 输出 [0, 0, 144, 208, 3] (对应十六进制的90、D0、03)

代码实现(十六进制字符串版本)

如果需要列表元素是两位十六进制字符串(完全匹配你给出的[00,00,90,d0,03]格式),可以修改成这样:

def convert_cust_id_to_hex_str_arr(cust_id):
    arr = ["00", "00", "00", "00", "00"]
    # 格式化每个字节为两位大写十六进制字符串
    arr[2] = f"{cust_id & 0xFF:02X}"
    arr[3] = f"{(cust_id >> 8) & 0xFF:02X}"
    arr[4] = f"{(cust_id >> 16) & 0xFF:02X}"
    return arr

# 测试例子
print(convert_cust_id_to_hex_str_arr(250000)) # 输出 ['00', '00', '90', 'D0', '03']

为什么这样做?

  • & 0xFF的作用是保留数值的最后8位(一个字节),过滤掉更高位的内容
  • >> 8是把数值右移8位,相当于把原来的第2个字节移到最低位,这样就能用& 0xFF提取出来
  • 客户号最大是250000,右移16位后最高位只有0x03,不会超过一个字节,所以完全符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:22:29