I am working on a networking script in PHP using PHP's socket functions. One thing I noticed was a lack of a way to convert integers to WORDs and DWORDs. Google does not help me in any way, but I did find something that is kind of helpful. Someone posted this bit of code on a forum.
/* Create a little-endian 16-bit integer (WORD) */
function make_int16($w) {
$A = (((int)$w & 0x00FF) >> 0);
$B = (((int)$w & 0xFF00) >> 8);
return chr($A) . chr($B);
}
/* Create a little-endian 32-bit integer (DWORD) */
function make_int32($d) {
$A = (((int)$d & 0x000000FF) >> 0);
$B = (((int)$d & 0x0000FF00) >> 8);
$C = (((int)$d & 0x00FF0000) >> 16);
$D = (((int)$d & 0xFF000000) >> 24);
return chr($A) . chr($B) . chr($C) . chr($D);
}
I don't know if this bit of code works because my outgoing packet structure needs to be fixed, so either way it won't work and I need to write the code to receive packets.
So, I need to know if this code is correct and that is the right way to convert hex values to WORDs and DWORDs and I also want to know if someone is willing to explain how it works for me (bitwise math isn't a very strong suit of mine).