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