On Fri, 22 Mar 2002, Mike Eynon wrote: > I have looked through the pack code in php-4.1.2. There appear to be no > other options other than what is documented on the php.net pack function > page. There appears to be no way of specifying endian-ness for floats or > doubles using pack. They are copied to the output stream using a simple > memcpy.
The solution was much simpler than I though. Reversing the output with strrev() seems to do the job: $double = pack("d", $val); if ($bigendian) { $double = strrev($double); } Now the value of $double is the same in big and smallendian machines. So I suppose strrev() is binary safe. > I would need more details on what you are doing to be sure, but, is the > format something you can worry about on the unpacking side? I am writing a binary file (BIFF) whose specs state that the data needs to be written littleendian. > The code in pack.c for the pack function is pretty dang simple. It wouldn't > take more than an hour or so to cut and paste a few sections of code to add > the options you need. Could be good to have in future versions of php. +1 for adding that to future versions. Don't talk C myself though ;) -- Mika Tuupola http://www.appelsiini.net/~tuupola/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php