- From: Michael Kay <mike@saxonica.com>
- Date: Thu, 14 Mar 2013 08:59:32 +0000
- To: Adam Retter <adam@exist-db.org>
- CC: public-expath@w3.org
On 13/03/2013 17:20, Adam Retter wrote:
> A second stream of consciousness:
>
> I feel very uneasy about representing octets using integers. So I ask
> myself why? Is it history - i.e. eXist and Zorba (maybe others)
> represent octets as octal strings and allow for the conversion of
> octal to/from decimal with functions.
Odd, I haven't seen octal used in anger for about 25 years, I thought it
was completely obsolete. But then I guess I've managed to avoid writing
in C. Every since the industry standardized on an 8-bit byte,
hexadecimal has seemed much more natural.
>
> An octet is implicitly in Base 8
Eh? if it's anything, surely it's implicitly in base 2?
> , so why would I then want to
> manipulate it as thought it were Base 10 (but without converting it to
> Base 10). This just doesnt make sense to me -
>
> If I understand correctly -
>
> bin:binary-to-octets(xs:hexBinary("FFFF")) would give me (255, 255)
Seems natural to me.
>
> Rather if you want to go to base10 then
> bin:binary-to-radix(xs:hexBinary("FFFF"), 10) could give me 65535.
But there's nothing intrinsically decimal about the value 65535, other
than the way it's being printed on the page.
bin:binary-to-radix(xs:hexBinary("FFFF"), 17) would give you exactly the
same integer - it only becomes base 17 when you convert the integer to a
string to display it.
>
>
> All of the bitwise operators seem to operate on xs:hexBinary
Yes, I think it's a separate discussion whether bitwise operators on
integers would be more useful. I think the main problem is that we don't
have hex literals, so we can't say $x & xFF00, instead we have to say either
(1) if we use hexBinary: bin:and($x, xs:hexBinary("FF00"))
(2) if we use base64Binary: bin:and ($x, xs:base64Binary("/wA="))
(3) if we use integer: bin:and($x, 65280)
None of these is nice, but the first seems to me the most readable. If
we go with (and/or/not) working on integers, then perhaps we should also
have functions
bin:hex("FF00") => 65280
bin:octal("177400") => 65280 (since you're telling me that there are
indeed people who still use octal...)
Michael Kay
Saxonica
Received on Thursday, 14 March 2013 08:59:55 UTC