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

如何在XQuery中实现ASCII到十六进制字符串的转换?

没问题,我来帮你实现XQuery里ASCII字符串转十六进制的功能!下面是具体的代码片段和说明:

XQuery实现ASCII字符串转十六进制字符串

核心函数实现

这里提供一个自定义函数,专门处理ASCII到十六进制的转换,完全匹配你给出的示例需求:

declare function local:ascii-to-hex($input as xs:string) as xs:string {
  string-join(
    for $codepoint in string-to-codepoints($input)
    return format-integer($codepoint, '00X'),
    ''
  )
};

函数工作原理

  • string-to-codepoints($input):将输入的ASCII字符串拆分成每个字符对应的ASCII码点(因为输入是纯ASCII字符,码点值就是ASCII值)
  • format-integer($codepoint, '00X'):把每个码点格式化为两位大写十六进制字符串,如果码点对应的十六进制不足两位,自动在前面补零(比如ASCII码49对应字符'1',会被格式化为"31")
  • string-join(..., ''):把所有单个字符的十六进制结果拼接成一个完整的字符串

测试示例

用你提供的输入字符串测试:

let $original-string := "1239565447854"
let $hex-result := local:ascii-to-hex($original-string)
return $hex-result

运行后会输出:31323339353635343437383534,和你预期的结果完全一致。

简洁写法(适合纯ASCII场景)

如果你的输入肯定是纯ASCII字符串,还可以用更简洁的内置函数组合实现:

let $original-string := "1239565447854"
return xs:string(xs:hexBinary(xs:base64Binary($original-string)))

这个写法利用XQuery的二进制类型转换,同样能得到相同的结果,代码更短但灵活性稍弱(比如无法自定义十六进制的大小写或处理非ASCII编码)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:32:31