You need to enable JavaScript to run this app. 如何实现HEX函数从右往左读取,将倒序存储的HEX值转换为DEC数值
优惠活动
大模型
产品
解决方案
定价
更多

如何实现HEX函数从右往左读取,将倒序存储的HEX值转换为DEC数值

解决方案

这个问题本质是小端序(Little-endian) 字节存储规则导致的HEX字符串倒序,属于多字节数值跨系统存储的典型字节序问题,以下是不同场景的可落地实现方案:

通用处理逻辑(全语言通用)

  • 从数据库取出完整HEX字符串后,先截取对应数值长度的有效位,你当前场景的数值占2字节,有效位是前4位8813,后续的0是填充位可直接截断
  • 将有效HEX字符串按每2个字符为1个字节分组,得到['88', '13']
  • 反转分组后的数组,得到['13', '88']
  • 把反转后的数组合并为新的HEX字符串1388,再转换为十进制即可得到正确数值5000

各场景代码示例

网页前端JavaScript直接处理

// 入参为从接口拿到的数据库存储HEX字符串
const dbHexStr = '881300000000000';
// 按数值实际占用字节数截取有效位,2字节对应4位HEX
const validHex = dbHexStr.slice(0, 4);
// 按2字符分组、反转、合并得到正确顺序的HEX
const correctHex = validHex.match(/.{1,2}/g).reverse().join('');
// 转十进制数值
const decResult = parseInt(correctHex, 16);
console.log(decResult); // 输出 5000

后端Python处理

db_hex_str = '881300000000000'
valid_hex = db_hex_str[:4]
# 分组反转合并逻辑
correct_hex = ''.join([valid_hex[i:i+2] for i in range(0, len(valid_hex), 2)][::-1])
dec_result = int(correct_hex, 16)
print(dec_result) # 输出 5000

MySQL查询时直接转换(无需业务层处理)

-- 假设HEX存储字段为hex_col,对应表为your_table
SELECT CAST(CONV(
  CONCAT(
    SUBSTRING(hex_col, 3, 2),
    SUBSTRING(hex_col, 1, 2)
  ), 16, 10
) AS UNSIGNED) AS dec_result FROM your_table;

扩展说明

如果后续需要处理更长的数值(比如4字节对应8位HEX),仅需要调整有效位截取长度,分组反转的核心逻辑完全通用,提前确认业务数值的字节长度即可避免截断错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 20:09:03