EMQX 5.0 规则引擎中可以把十六进制的数据转为十进制数据吗?

想把payload中字符串的十六进制数据转为十进制数据输出,但是只找到十六进制转二进制的函数(hexstr2bin),请问有没有十六进制转十进制的函数吗?

现在还没有直接的函数可以直接从 hexstr 转换为对应的 Integer;如果是固定位数的 hexstr,可以尝试用 subbits 函数。
例如:

SELECT
  payload.pkdt as pkdt,
  hexstr2bin(substr(pkdt, 0, 4)) as pkdt_bin,
  subbits(pkdt_bin, 1, 32, 'integer', 'signed', 'big') as x_axis
FROM
  "t/#"

输入:

{"pkdt": "8200"}

输出:

x_axis: -32256

这里使用了 subbits/6 函数:

  1. 第一个参数: 指需要转换的二进制,这里是 pkdt_bin
  2. 第二个参数:开始位置,按比特位算,从 1 开始计算。这里填 1 即从二进制的开头开始
  3. 第三个参数:长度,按比特位算。这里是 32 即长度为4个字节
  4. 第四个参数:转换的目标类型,这里为 integer 即整数
  5. 第五个参数:符号类型,signed 表示有符合, unsigned 表示无符号
  6. 第六个参数:字节序, big 表示大端字节, little 表示小端

感谢,用您提供的方法已成功解决