I'm writing a client for a binary socket protocol in PHP, and it's a pain. I'm currently using pack to convert numbers into binary strings, but it's lacking. Two options pack has are:
- Write a signed 32 bit integer in machine byte order
- Write an insigned 32 bit integer in big endian byte order
But I need to write signed 32 bit integers in big endian order, as with Java's DataOutputStream.writeInteger. pack doesn't have that option.
Is there a way to do this with pack, or to transform the output of pack, or maybe a better library for working with binary data in PHP?
-
1Not sure if this helps, but here goes: phpclasses.org/package/…Russell Dias– Russell Dias2010年10月05日 12:21:50 +00:00Commented Oct 5, 2010 at 12:21
2 Answers 2
Do you use the Zend Framework? If so, you can use the function Zend_Io_Writer::writeInt32BE()
Writes signed 32-bit integer as big-endian ordered binary data to the stream.
Or else you should take a look at the ZF-source how these guys handle this.
Comments
The specification for PHP's pack() says that the unsigned/signed distinction only matters for unpack(), not pack().
So just use the 32 bit network byte order option (N).
2 Comments
Explore related questions
See similar questions with these tags.