Sign in to follow this  
Followers 0
blindwig

BinaryString() bytes in reverse order?

2 posts in this topic

#1 ·  Posted (edited)

I'm working on optimizing a base64 conversion routine and I go the idea that I can use a BinaryString() function call instead of doing lots of Chr() functions. I was also hoping that I could use the int() and/or Number() functions instead of asc() functions.

This code:

$i = ((65 * 256 + 66) * 256 + 67) * 256 + 68
$b = BinaryString($i)
$n = Number($b)
ConsoleWrite($i & @CR)
ConsoleWrite($b & @CR)
ConsoleWrite($n & @CR)

Outputs this:

1094861636
DCBA
68

(FYI: Chr(65)='A')

First, I notice that BinaryString() puts the bytes in reverse order. This isn't a bug, as this is the way that the function is described in the manual. I'm just curious as to why it would do this - what's the purpose of reversing the bytes?

Second, why does the Number() function only consider the first byte of the BinaryString? The statment "Number(string(256*256*256*256))" works as expected, so obviously the Number() function is capable to handle numbers bigger than 8 bits?

And one more thing - BinaryString() always returns a string that is a multiple of 4. So the statement "StringLen(BinaryString(65))" evaluates to 4. Why is this? Agagin, this is not a bug, it is in the manual, but I just want to know why.

Edited by blindwig

Share this post


Link to post
Share on other sites



Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0