Xml Xquery中的十六进制到Ascii转换
我需要使用xquery将十六进制字符串转换为ASCII,请提供相应的参考或代码片段以实现此功能Xml Xquery中的十六进制到Ascii转换,xml,xslt,xquery,Xml,Xslt,Xquery,我需要使用xquery将十六进制字符串转换为ASCII,请提供相应的参考或代码片段以实现此功能 谢谢你的帮助 如果要解码十六进制编码的字符串,可以使用和来解构/重建字符串: declare function local:hex-digit($digit as xs:integer) as xs:integer { (: range '0'..'9' :) if(48 le $digit and $digit lt 58) then $digit - 48 (: range 'a'..
谢谢你的帮助 如果要解码十六进制编码的字符串,可以使用和来解构/重建字符串:
declare function local:hex-digit($digit as xs:integer) as xs:integer {
(: range '0'..'9' :)
if(48 le $digit and $digit lt 58) then $digit - 48
(: range 'a'..'f' :)
else if(97 le $digit and $digit lt 103) then $digit - 87
(: everything else :)
else fn:error((), 'Illegal character: ' || $digit)
};
declare function local:hex-to-string($hex as xs:string) as xs:string {
let $n := fn:string-length($hex)
let $digits := fn:string-to-codepoints(lower-case($hex))
return fn:codepoints-to-string(
for $pos in 1 to $n idiv 2
let $hi := $digits[2 * $pos - 1],
$lo := $digits[2 * $pos]
return 16 * local:hex-digit($hi) + local:hex-digit($lo)
)
};
然后
local:hex-to-string(“68656C6F20776F726C6421”)
返回字符串“hello-world!”
不是所有的十六进制符号都是ASCII字母吗?您希望在十六进制和ASCII之间建立什么样的映射?请尝试更好的映射。什么是“十六进制字符串”?最简单的方法是将其转换为xs:hexBinary
,并将二进制读取为字符串,但并非所有xquery处理器都可以执行第二步