thanks

yes, it works on x86_64

my environment:
Darwin  10.4.0 Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010;
root:xnu-1504.7.4~1/RELEASE_I386 i386

is have any Compatible solutions  on 64bit and 32bit?


2010/7/7 Juho Mäkinen <juho.maki...@gmail.com>

> Hello.
>
> I added that code and it works on our x86_64 bit Intel machine (just
> tested with your test.php). What environment are you using? I haven't
> tested the code on a 32bit machine and I believe that it will not work
> there. I should have propably added a note to the wiki that it wont
> work on 32bit environment.
>
>  - Juho Mäkinen
>
> On Wed, Jul 7, 2010 at 2:08 PM, john xie <shanfengg...@gmail.com> wrote:
> >
> >
> > http://wiki.apache.org/cassandra/FAQ#a_long_is_exactly_8_bytes
> >
> >         /**
> >          * Takes php integer and packs it to 64bit (8 bytes) long big
> endian
> > binary representation.
> >          * @param  $x integer
> >          * @return string eight bytes long binary repersentation of the
> > integer in big endian order.
> >          */
> >         public static function pack_longtype($x) {
> >                 return pack('C8', ($x >> 56) & 0xff, ($x >> 48) & 0xff,
> ($x
> >>> 40) & 0xff, ($x >> 32) & 0xff,
> >                                 ($x >> 24) & 0xff, ($x >> 16) & 0xff, ($x
> >>
> > 8) & 0xff, $x & 0xff);
> >         }
> >
> >         /**
> >          * Takes eight bytes long big endian binary representation of an
> > integer and unpacks it to a php integer.
> >          * @param  $x
> >          * @return php integer
> >          */
> >         public static function unpack_longtype($x) {
> >                 $a = unpack('C8', $x);
> >                 return ($a[1] << 56) + ($a[2] << 48) + ($a[3] << 40) +
> > ($a[4] << 32) + ($a[5] << 24) + ($a[6] << 16) + ($a[7] << 8) + $a[8];
> >         }
> >
> > test.php:
> >
> >  $input=1;
> >
> >  $output=unpack_longtype(pack_longtype($input));
> >
> >   print "input=".$input." but output = ".$output."\n";
> >
> >  $input=2;
> >
> >  $output=unpack_longtype(pack_longtype($input));
> >
> >  print "input=".$input." but output = ".$output."\n";
> >
> >   $input=3;
> >
> >  $output=unpack_longtype(pack_longtype($input));
> >
> >  print "input=".$input." but output = ".$output."\n";
> >
> > but in log file:
> >
> > input=1 but output = 2
> >
> > input=2 but output = 4
> >
> > input=3 but output = 6
> >
> >
> >
>



-- 
谢善峰    johnxie
联系方式:
MSN:johnxieg...@hotmail.com <msn%3ajohnxieg...@hotmail.com>
GTALK: shanfengg...@gmail.com
E_mail:john...@topgene.net <e_mail%3ajohn...@topgene.net>
------------------------------------------
智信环宇  Internet Service On_Demand

Reply via email to