On 2018-11-13 11:06, Geoff Canyon via use-livecode wrote:
I don't *think* I'm confusing binary string/data with binary numbers --
I
was just trying to illustrate that when a Latin Small Letter A (U+0061)
gets encoded, somewhere there is stored (four bytes, one of which is) a
byte 97, i.e. the bit sequence 1100001, unless computers don't work
that
way anymore.
Yes - a byte is not a number, a char is not a number a bit sequence is
not a number.
Chars have never been numbers in LC - when LC sees a char - it sees a
string and so
when such a thing is used in number context it converts it to the number
it *looks* like
i.e. "1" -> 1, but "a" -> error in number context (bearing in mind the
code for "1" is not 1).
i.e. numToChar(charToNum("1")) + 0 -> 1
The same is try for 'byte' in LC7+ (indeed prior to that byte was a
synonym for char).
What I now see is tripping me up is the implicit cast to a character
you're
saying that charToNum supports, without the corresponding cast to a
number
supported in numToChar -- i.e. this fails:
put textEncode("a","UTF-32") into X;put numtochar(byte 1 of X)
Right so that shouldn't work - byte 1 of X here is <97> (a byte), bytes
get converted to native
chars in string context, so numToChar(byte 1 of X) -> numToChar(<97> as
char) -> numToChar("a")
and "a" is not a number.
You'd get exactly the same result if you did put numToChar(char 1 of
"a").
As I said, bytes are not numbers, just as chars are not numbers - bytes
do implicitly convert to
(native) chars though - so when you use a binary string in number
context, it gets treated as a
numeric string.
Put another way, just as the code for a char is not used in conversion
in number context, the
code of a byte is not used either.
Warmest Regards,
Mark.
--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode