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

在Google BigQuery SQL中将指定HEX字符串转换为多个十进制数

在BigQuery中拆分HEX字符串为指定长度的十进制数

针对你的需求,我们可以利用BigQuery的数组操作和类型转换来实现,核心是按小端字节序拼接对应字节后转十进制。以下是简洁的实现代码:

WITH hex AS (
  SELECT '0x40,0xb,0x0,0x0,0x2,0x9,0x0,0x0,0x2a,0x0' hex_col
),
processed AS (
  SELECT
    -- 拆分字符串为数组,同时去掉每个元素的'0x'前缀,得到纯十六进制字符数组
    ARRAY(SELECT REPLACE(TRIM(element), '0x', '') FROM UNNEST(SPLIT(hex_col, ',')) element) AS hex_arr
  FROM hex
)
SELECT
  -- 处理第一个32bit值:取前4个字节倒序拼接,转十进制
  CAST(CONCAT('0x', hex_arr[3], hex_arr[2], hex_arr[1], hex_arr[0]) AS INT64) AS val_32bit_1,
  -- 处理第二个32bit值:取中间4个字节倒序拼接,转十进制
  CAST(CONCAT('0x', hex_arr[7], hex_arr[6], hex_arr[5], hex_arr[4]) AS INT64) AS val_32bit_2,
  -- 处理16bit值:取最后2个字节倒序拼接,转十进制
  CAST(CONCAT('0x', hex_arr[9], hex_arr[8]) AS INT64) AS val_16bit
FROM processed

代码说明

  1. 拆分与清洗:用SPLIT将逗号分隔的HEX字符串拆成单个元素的数组,再通过REPLACE去掉每个元素的0x前缀,得到纯十六进制字符组成的数组。
  2. 小端字节序拼接:根据示例的转换逻辑(低字节在前),我们将对应位置的字节倒序拼接:
    • 第一个32bit取数组索引0-3的元素,按3→2→1→0的顺序拼接
    • 第二个32bit取索引4-7的元素,按7→6→5→4的顺序拼接
    • 16bit取索引8-9的元素,按9→8的顺序拼接
  3. 转十进制:给拼接后的十六进制字符串加上0x前缀,再用CAST(... AS INT64)直接转换为十进制数。

执行这段SQL后,会得到和示例完全一致的结果:2880、2306、42。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:38:25