Changes

Jump to navigation Jump to search
1,366 bytes added ,  13:11, 14 August 2019
=Conventions=
All functions and errors in this module are assigned to the {{Code|<code><nowiki>http://basex.org/modules/convert}} </nowiki></code> namespace, which is statically bound to the {{Code|convert}} prefix.<br/>All errors are assigned to the {{Code|http://basex.org/errors}} namespace, which is statically bound to the {{Code|bxerr}} prefix.
=Strings=
==convert:binary-to-string==
 
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|convert:binary-to-string|$bytes as basexxs:anyAtomicType|xs:string}}<br/>{{Func|convert:binary-to-string|$bytes as xs:anyAtomicType, $encoding as xs:string|xs:string}}<br/>{{Func|convert:binary-to-string|$bytes as basexxs:binaryanyAtomicType, $encoding as xs:string, $fallback as xs:boolean|xs:string}}
|-
| '''Summary'''
|Converts the specifed binary data {{Code|$bytes}} ({{Code|xs:base64Binary}}, {{Code|xs:hexBinary}}) to a string.<br/>:* The UTF-8 default encoding can be overwritten with the optional {{Code|$encoding}} argument.* By default, invalid characters will be rejected. If {{Code|$fallback}} is set to true, these characters will be replaced with the Unicode replacement character <code>FFFD</code> (&#xFFFD;).
|-
| '''Errors'''
|{{Error|BXCO0001string|#Errors}} The input is an invalid XML string, or the wrong encoding has been specified.<br/>{{Error|BXCO0002|#Errors}} The specified encoding is invalid or not supported.
|-
| '''Examples'''
|
* {{Code|convert:binary-to-string(xs:hexBinary('48656c6c6f576f726c64'))}} returns the string yields {{Code|HelloWorld}}.
|}
==convert:string-to-base64==
 
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|convert:string-to-base64|$input string as xs:string|xs:base64Binary}}<br/>{{Func|convert:string-to-base64|$input string as xs:string, $encoding as xs:string|xs:base64Binary}}
|-
| '''Summary'''
|Converts the specified {{Code|$string }} to a an {{Code|xs:base64Binary}} item. If the default encoding is chosen, conversion will be cheap, as both {{Code|xs:string}} strings and {{Code|xs:base64Binary}} items binaries are both internally represented as byte arrays.<br/>The UTF-8 default encoding can be overwritten with the optional {{Code|$encoding}} argument.
|-
| '''Errors'''
|{{Error|BXCO0001binary|#Errors}} The input cannot be represented in the specified encoding.<br/>{{Error|BXCO0002encoding|#Errors}} The specified encoding is invalid or not supported.
|-
| '''Examples'''
|
* {{Code|string(convert:string-to-base64('HelloWorld'))}} returns the xs:base64binary item yields <code>SGVsbG9Xb3JsZA==</code>.
|}
==convert:string-to-hex==
 
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|convert:string-to-hex|$input string as xs:string|xs:hexBinary}}<br/>{{Func|convert:string-to-hex|$input string as xs:string, $encoding as xs:string|xs:hexBinary}}
|-
| '''Summary'''
|Converts the specified {{Code|$string }} to a an {{Code|xs:hexBinary}} item. If the default encoding is chosen, conversion will be cheap, as both {{Code|xs:string}} strings and {{Code|xs:hexBinary}} items binaries are both internally represented as byte arrays.<br/>The UTF-8 default encoding can be overwritten with the optional {{Code|$encoding}} argument.
|-
| '''Errors'''
|{{Error|BXCO0001binary|#Errors}} The input cannot be represented in the specified encoding.<br/>{{Error|BXCO0002encoding|#Errors}} The specified encoding is invalid or not supported.
|-
| '''Examples'''
|
* {{Code|string(convert:string-to-hex('HelloWorld'))}} returns the Base64 item yields {{Code|48656C6C6F576F726C64}}.
|}
=Binary Data=
==convert:bytesintegers-to-base64== 
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|convert:bytesintegers-to-base64|$input integers as xs:byteinteger*|xs:base64Binary}}
|-
| '''Summary'''
|Converts the specified byte sequence to a {{Code|xs:base64Binary$integers}} to an item. Conversion is cheap, as of type {{Code|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:integers-to-hex== {| width='100%'
|-
| width='120' | '''ErrorsSignatures'''|{{Error|BXCO0001Func|#Errors}} The input cannot be represented in the specified encoding.<br/>{{Errorconvert:integers-to-hex|BXCO0002$integers as xs:integer*|#Errorsxs:hexBinary}} The specified encoding is invalid or not supported.
|-
| '''ExamplesSummary'''|* Converts the specified {{Code|$integers}} to an item of type {{Code|convertxs:string-to-base64('HelloWorld')hexBinary}} returns :* Only the first 8 bits of the xs:base64binary item <code>SGVsbG9Xb3JsZA==</code>supplied integers will be considered.* Conversion of byte sequences is very efficient, as items of binary type are internally represented as byte arrays.
|}
==convert:bytesbinary-to-hexintegers== 
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|convert:stringbinary-to-hexintegers|$input binary as xs:byte*anyAtomicType|xs:hexBinaryinteger*}}
|-
| '''Summary'''
|Converts Returns the specified byte sequence to a {{Code|$binary}} ({{Code|xs:hexBinarybase64Binary}} item. Conversion is cheap, as {{Code|xs:hexBinary}} items are internally represented ) as byte arrays.|-| '''Errors'''|{{Error|BXCO0001|#Errors}} The input cannot be represented in the specified encoding.<br/>{{Error|BXCO0002|#Errors}} The specified encoding is invalid or not supporteda sequence of unsigned integers (octets).
|-
| '''Examples'''
|
* {{Code|<code>convert:stringbinary-to-hexintegers(xs:hexBinary('HelloWorldFF')}} returns the Base64 item )</code> yields {{Code|48656C6C6F576F726C64255}}.
|}
==convert:binary-to-bytes==
 
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|convert:binary-to-bytes|$bin binary as basexxs:binaryanyAtomicType|xs:byte*}}
|-
| '''Summary'''
|Returns the specified {{Code|$binary data }} ({{Code|xs:base64Binary}}, {{Code|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'''
|
* <code>convert:binary-to-bytes(xs:base64Binary('QmFzZVggaXMgY29vbA=='))</code> returns yields the sequence {{Code|(66, 97, 115, 101, 88, 32, 105, 115, 32, 99, 111, 111, 108)}}.* {{Code|convert:binary-to-bytes(xs:hexBinary("4261736558"))}} returns yields the sequence {{Code|(66 97 115 101 88)}}.
|}
==convert:integer-to-base==
 
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|convert:integer-to-base|$num number as xs:integer, $base as xs:integer|xs:string}}<br />
|-
| '''Summary'''
|Converts {{Code|$numnumber}} to base a string, using the specified {{Code|$base}}, interpreting it as a 64-bit unsigned integer.<br />The first {{Code|$base}} elements of the sequence {{Code|'0',..,'9','a',..,'z'}} are used as digits.<br />Valid bases are {{Code|2, .., 36}}.<br />|-| '''Errors'''|{{Error|base|#Errors}} The specified base is not in the range 2-36.
|-
| '''Examples'''
|
* {{Code|convert:integer-to-base(-1, 16)}} returns the hexadecimal string yields {{Code|'ffffffffffffffff'}}.* {{Code|convert:integer-to-base(22, 5)}} returns yields {{Code|'42'}}.
|}
==convert:integer-from-base==
 
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|convert:integer-from-base|$str string as xs:string, $base as xs:integer|xs:integer}}<br />
|-
| '''Summary'''
|Decodes an {{Code|xs:integer}} from {{Code|$strstring}}, assuming that it's encoded in base using the specified {{Code|$base}}.<br /> The first {{Code|$base}} elements of the sequence {{Code|'0',..,'9','a',..,'z'}} are allowed as digits, ; case doesn't does not matter. <br />Valid bases are 2 - 36.<br /> If {{Code|$str}} the supplied string contains more than 64 bits of information, the result will be truncated.|-| '''Errors'''|{{Error|base|#Errors}} The specified base is not in the range 2-36.<br/>{{Error|integer|#Errors}} The specified digit is truncated arbitarilynot valid for the given range.
|-
| '''Examples'''
|
* {{Code|convert:integer-from-base('ffffffffffffffff', 16)}} returns yields {{Code|-1}}.* {{Code|convert:integer-from-base('CAFEBABE', 16)}} returns yields {{Code|3405691582}}.* {{Code|convert:integer-from-base('42', 5)}} returns yields {{Code|22}}.* {{Code|convert:integer-from-base(convert:integer-to-base(123, 7), 7)}} returns yields {{Code|123}}.
|}
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|convert:integer-to-dateTime|$ms milliseconds as xs:integer|xs:dateTime}}<br />
|-
| '''Summary'''
|Converts the specified number of {{Code|$milliseconds }} since 1 Jan 1970 to an item of type xs:dateTime.<br />
|-
| '''Examples'''
|
* {{Code|convert:integer-to-dateTime(0)}} returns yields {{Code|1970-01-01T00:00:00Z}}.* {{Code|convert:integer-to-dateTime(1234567890123)}} returns yields {{Code|2009-02-13T23:31:30.123Z}}.* {{Code|convert:integer-to-dateTime(prof:current-ms())}} returns the current miliseconds in the {{Code|xs:dateTime}} format.
|}
{| width='100%'
|-
| width='90120' | '''Signatures'''
|{{Func|convert:dateTime-to-integer|$dateTime as xs:dateTime|xs:integer}}<br />
|-
| '''Summary'''
|Converts the specified {{Code|$dateTime}} item of type xs:dateTime to the number of milliseconds since 1 Jan 1970.<br />
|-
| '''Examples'''
|
* {{Code|convert:dateTime-to-integer(xs:dateTime('1970-01-01T00:00:00Z'))}} returns yields {{Code|0}}.
|}
{| width='100%'
|-
| width='90120' | '''Signatures'''|{{Func|convert:integer-to-dayTime|$ms milliseconds as xs:integer|xs:dayTimeDuration}}<br />
|-
| '''Summary'''
|Converts the specified number of {{Code|$milliseconds }} to an item of type xs:dayTimeDuration.<br />
|-
| '''Examples'''
|
* {{Code|convert:integer-to-dayTime(1234)}} returns yields {{Code|PT1.234S}}.
|}
{| width='100%'
|-
| width='90120' | '''Signatures'''
|{{Func|convert:dayTime-to-integer|$dayTime as xs:dayTimeDuration|xs:integer}}<br />
|-
| '''Summary'''
|Converts the specified item of type xs:dayTimeDuration {{Code|$dayTime}} duration to milliseconds represented by an integer.<br />
|-
| '''Examples'''
|
* {{Code|convert:dayTime-to-integer(xs:dayTimeDuration('PT1S'))}} returns yields {{Code|1000}}.
|}
=Errors=
{| width='100%' class="wikitable" width="100%"! width="5%110"|Code! width="95%"|Description|-|{{Code|base}}|The specified base is not in the range 2-36.
|-
|{{Code|BXCO0001binary}}|The input is an invalid XML string, or the wrong encoding has been specifiedcannot be converted to a binary representation.
|-
|{{Code|BXCO0002encoding}}
|The specified encoding is invalid or not supported.
|-
|{{Code|integer}}
|The specified digit is not valid for the given range.
|-
|{{Code|string}}
|The input is an invalid XML string, or the wrong encoding has been specified.
|}
=Changelog=
 
;Version 9.0
 
* Added: [[#convert:binary-to-integers|convert:binary-to-integers]].
* Updated: [[#convert:integers-to-base64|convert:integers-to-base64]], [[#convert:integers-to-hex|convert:integers-to-hex]]: Renamed from {{Code|convert:bytes-to-base64}}; argument type relaxed from {{Code|xs:byte}} to {{Code|xs:integer}}.
* Updated: error codes updated; errors now use the module namespace
 
;Version 8.5
 
* Updated: [[#convert:binary-to-string|convert:binary-to-string]]: <code>$fallback</code> argument added.
;Version 7.5
* Added: <code>[[#convert:integer-to-dateTime|convert:integer-to-dateTime]]</code>, <code>[[#convert:dateTime-to-integer|convert:dateTime-to-integer]]</code>, <code>[[#convert:integer-to-dayTime|convert:integer-to-dayTime]]</code>, <code>[[#convert:dayTime-to-integer|convert:dayTime-to-integer]]</code>.
The module was introduced with Version 7.3. Some of the functions have been adopted from the obsolete Utility Module.
 
[[Category:XQuery]]
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu