What's wrong with
>> to-hex 56
== #00000038
>> to-hex 2037
== #000007F5
>> to-hex -56
== #FFFFFFC8
>> to-hex -2037
== #FFFFF80B
Mike.
----- Original Message -----
From: [EMAIL PROTECTED]
Date: Wednesday, October 11, 2000 7:50 am
Subject: [REBOL] Bitwise manipulation Re:
> Hi, Phil...
>
> [EMAIL PROTECTED] wrote:
> >
> > An interesting one ...
> >
> > I have a integer value that I must convert to binary:
> >
> > Nice and easy for values <= 127
> >
> > int1: 56
> >
> > b1: to-binary to-block int1
> >
> > HOWEVER, if int1 is greater than 127, say 2037, I have to
> perform the
> >
> > following task:
> >
> > 2037 which is equivalent to 0000100001011000 must be split into
> 2 bytes as
> >
> > follows
> >
> > b1: -> 00001000 effectively b1: to-binary to-block 8
> >
> > b2: -> 01011000 effectively b2: to-binary to-block 24
> >
> > Any suggestions..
> >
>
> Two suggestions:
>
> 1) Try using
>
> big-endian: func [n [integer!] /local r] [
> r: copy #{}
> until [
> insert r to-binary to-char (n // 256)
> 0 = n: to-integer n / 256
> ]
> r
> ]
>
> >> big-endian 56
> == #{38}
> >> big-endian 2037
> == #{07F5}
>
> However, *DANGER, WILL ROBINSON!*,
>
> 1.1) This assumes byte order for values requiring more than 8
> bits. 1.2) It breaks for negative values! (Explaining why and
> proposing a repair are left as exercises for the reader...
> ;-)
>
> 2) Check your math. Last time I looked, 2037 was odd, which
> means that
> its binary representation MUST end in a one! ;-)
>
> -jn-
>
> --
> ; Joel Neely [EMAIL PROTECTED] 901-263-4460 38017/HKA/9677
> REBOL [] print to-string debase decompress #{
> 789C0BCE0BAB4A7176CA48CAB53448740FABF474F3720BCC
> B6F4F574CFC888342AC949CE74B50500E1710C0C24000000}
>
>