This XQuery Module contains functions to convert data between different formats.
Conventions
All functions and errors in this module are assigned to the http://basex.org/modules/convert
namespace, which is statically bound to the convert
prefix.
Strings
convert:binarytostring
Signatures

convert:binarytostring($bytes as xs:anyAtomicType) as xs:string
convert:binarytostring($bytes as xs:anyAtomicType, $encoding as xs:string) as xs:string
convert:binarytostring($bytes as xs:anyAtomicType, $encoding as xs:string, $fallback as xs:boolean) as xs:string

Summary

Converts the specifed $bytes (xs:base64Binary , xs:hexBinary ) to a string:
 The UTF8 default encoding can be overwritten with the optional
$encoding argument.
 By default, invalid characters will be rejected. If
$fallback is set to true, these characters will be replaced with the Unicode replacement character FFFD (�).

Errors

string : The input is an invalid XML string, or the wrong encoding has been specified.
BXCO0002 : The specified encoding is invalid or not supported.

Examples

convert:binarytostring(xs:hexBinary('48656c6c6f576f726c64')) yields HelloWorld .

convert:stringtobase64
Signatures

convert:stringtobase64($string as xs:string) as xs:base64Binary
convert:stringtobase64($string as xs:string, $encoding as xs:string) as xs:base64Binary

Summary

Converts the specified $string to an xs:base64Binary item. If the default encoding is chosen, conversion will be cheap, as strings and binaries are both internally represented as byte arrays. The UTF8 default encoding can be overwritten with the optional $encoding argument.

Errors

binary : The input cannot be represented in the specified encoding.
encoding : The specified encoding is invalid or not supported.

Examples

string(convert:stringtobase64('HelloWorld')) yields SGVsbG9Xb3JsZA== .

convert:stringtohex
Signatures

convert:stringtohex($string as xs:string) as xs:hexBinary
convert:stringtohex($string as xs:string, $encoding as xs:string) as xs:hexBinary

Summary

Converts the specified $string to an xs:hexBinary item. If the default encoding is chosen, conversion will be cheap, as strings and binaries are both internally represented as byte arrays. The UTF8 default encoding can be overwritten with the optional $encoding argument.

Errors

binary : The input cannot be represented in the specified encoding.
encoding : The specified encoding is invalid or not supported.

Examples

string(convert:stringtohex('HelloWorld')) yields 48656C6C6F576F726C64 .

Binary Data
convert:integerstobase64
Signatures

convert:integerstobase64($integers as xs:integer*) as xs:base64Binary

Summary

Converts the specified $integers to an item of type xs:base64Binary :
 Only the first 8 bits of the supplied integers will be considered.
 Conversion of byte sequences is very efficient, as items of binary type are internally represented as byte arrays.

convert:integerstohex
Signatures

convert:integerstohex($integers as xs:integer*) as xs:hexBinary

Summary

Converts the specified $integers to an item of type xs:hexBinary :
 Only the first 8 bits of the supplied integers will be considered.
 Conversion of byte sequences is very efficient, as items of binary type are internally represented as byte arrays.

convert:binarytointegers
Signatures

convert:binarytointegers($binary as xs:anyAtomicType) as xs:integer*

Summary

Returns the specified $binary (xs:base64Binary , xs:hexBinary ) as a sequence of unsigned integers (octets).

Examples

convert:binarytointegers(xs:hexBinary('FF')) yields 255 .

convert:binarytobytes
Signatures

convert:binarytobytes($binary as xs:anyAtomicType) as xs:byte*

Summary

Returns the specified $binary (xs:base64Binary , xs:hexBinary ) as a sequence of bytes. The conversion is very cheap and takes no additional memory, as items of binary type are internally represented as byte arrays.

Examples

convert:binarytobytes(xs:base64Binary('QmFzZVggaXMgY29vbA==')) yields the sequence (66, 97, 115, 101, 88, 32, 105, 115, 32, 99, 111, 111, 108) .
convert:binarytobytes(xs:hexBinary("4261736558")) yields the sequence (66 97 115 101 88) .

Numbers
convert:integertobase
Signatures

convert:integertobase($number as xs:integer, $base as xs:integer) as xs:string

Summary

Converts $number to a string, using the specified $base , interpreting it as a 64bit unsigned integer. The first base elements of the sequence '0',..,'9','a',..,'z' are used as digits. Valid bases are 2, .., 36 .

Errors

base : The specified base is not in the range 236.

Examples

convert:integertobase(1, 16) yields 'ffffffffffffffff' .
convert:integertobase(22, 5) yields '42' .

convert:integerfrombase
Signatures

convert:integerfrombase($string as xs:string, $base as xs:integer) as xs:integer

Summary

Decodes an integer from $string , using the specified $base . The first base elements of the sequence '0',..,'9','a',..,'z' are allowed as digits; case does not matter. Valid bases are 2  36. If the supplied string contains more than 64 bits of information, the result will be truncated.

Errors

base : The specified base is not in the range 236.
integer : The specified digit is not valid for the given range.

Examples

convert:integerfrombase('ffffffffffffffff', 16) yields 1 .
convert:integerfrombase('CAFEBABE', 16) yields 3405691582 .
convert:integerfrombase('42', 5) yields 22 .
convert:integerfrombase(convert:integertobase(123, 7), 7) yields 123 .

Dates and Durations
convert:integertodateTime
Signatures

convert:integertodateTime($milliseconds as xs:integer) as xs:dateTime

Summary

Converts the specified number of $milliseconds since 1 Jan 1970 to an item of type xs:dateTime.

Examples

convert:integertodateTime(0) yields 19700101T00:00:00Z .
convert:integertodateTime(1234567890123) yields 20090213T23:31:30.123Z .
convert:integertodateTime(prof:currentms()) returns the current miliseconds in the xs:dateTime format.

convert:dateTimetointeger
Signatures

convert:dateTimetointeger($dateTime as xs:dateTime) as xs:integer

Summary

Converts the specified $dateTime item to the number of milliseconds since 1 Jan 1970.

Examples

convert:dateTimetointeger(xs:dateTime('19700101T00:00:00Z')) yields 0 .

convert:integertodayTime
Signatures

convert:integertodayTime($milliseconds as xs:integer) as xs:dayTimeDuration

Summary

Converts the specified number of $milliseconds to an item of type xs:dayTimeDuration.

Examples

convert:integertodayTime(1234) yields PT1.234S .

convert:dayTimetointeger
Signatures

convert:dayTimetointeger($dayTime as xs:dayTimeDuration) as xs:integer

Summary

Converts the specified $dayTime duration to milliseconds represented by an integer.

Examples

convert:dayTimetointeger(xs:dayTimeDuration('PT1S')) yields 1000 .

Errors
Code

Description

base

The specified base is not in the range 236.

binary

The input cannot be converted to a binary representation.

encoding

The specified encoding is invalid or not supported.

integer

The specified digit is not valid for the given range.

string

The input is an invalid XML string, or the wrong encoding has been specified.

Changelog
 Version 9.0
 Version 8.5
 Version 7.5
The module was introduced with Version 7.3. Some of the functions have been adopted from the obsolete Utility Module.