Re: [PECL-DEV] Endianness in PHP

[email protected] ("J. Adams")
Newsgroups php.pecl.dev
Message-ID <[email protected]>
Thanks for your response Alexey. I am aware of those functions but am 
really wondering if they are the way this is usually handled in PHP.  
The function htonl appears in the PHP Trunk in only about 10 places:
http://lxr.php.net/search?q=htonl&project=PHP_TRUNK&defs=&refs=&path=&hist=

My concerns are mostly about portability (see below).
>> Two questions:
>> 1) Is there a standardized way or recommended best practice for conversions
>> of ints, longs, and doubles to network byte order?
>>     
>
> Usually, operating system provides functions for this.
> Look for the following functions: htonl, htons, ntohl, ntohs
>   
It's my understanding that these functions aren't always available.  
This link:
http://www.codeguru.com/forum/showthread.php?t=298741
says "'ntohs()', 'ntohl()', 'htons()', and 'htonl()' are not part of the 
C standard, and thus do not guarentee [sic] portability. "

Also, my linux man pages say "These routines convert 16 and 32 bit 
quantities between network byte order and host byte order."  Correct me 
if I'm wrong, but, PHP appears to use long rather than more specific 
data types like uint32_t.  What happens when a long is 64 bits? Are 
these conversions valid for signed quantities?  The docs all suggest 
they are for unsigned 16- or 32-bit ints. What about longs? What about 
doubles?

I'm also wondering about the includes required for these functions.  On 
*nix machines, it would appear to be:
#include <arpa/inet.h>
On windows, it would seem to be:
#include <winsock2.h>
Would that cover every platform where PHP is supposed to run?

Seems to me PHP needs some standard way of handling this issue. If you 
insist these functions are the way to go, I will believe you, but that 
solution seems incomplete to me.

>> 2) Can anyone recommend a cheap way to gain access to a Big-Endian machine
>> for development and testing?
>>     
>
> get old PowerPC mac ("mac mini G4" or something like that)
>   
Ugh.  I was rather hoping I could get access to a VPS somewhere, perhaps 
through EC2 or Rackspace.com.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.