Hi,

I'm writing to request for RFC karma.

Here is what I am doing and why doing this.

The pack/unpack's parameter 'd' and 'f' are machine order in PHP.

The number 236.0 packed to 'd' is: 0000000000806d40.

I was reversing a game save file, which uses 406D800000000000.
Here is how I decode that in PHP.

        public function readDouble()
        {
                $data = substr($this->stream, $this->ptr, 8);
                $this->ptr += 8;

                $data = implode('', array_reverse(str_split($data, 1)));

                $int = unpack('d', $data);
                return (double) ($int[1]);
        }

Since integers are allowed to pack/unpack in both little endian and
big endian, I think double/float also need.

In this PR, I choose:
e: little endian double
E: big endian double
g: little endian float
G: big endian float.

BTW, these formats, 'e', 'E', 'g', and 'G' are not taken in Perl.


I've created a PR: https://github.com/php/php-src/pull/1905



sskaje
ssk...@gmail.com
https://sskaje.me/

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to