@@ -124,19 +124,27 @@ private function packFloat(float $value): string
124124 private function packInteger (int $ value ): string
125125 {
126126 $ output = '' ;
127+ $ tmp = unpack ('S ' , "\x01\x00" );
128+ $ little = $ tmp [1 ] == 1 ;
127129
128130 if ($ value > -1 && $ value < 127 ) { //+TINY_INT
129- $ output .= pack ('C ' , 0b00000000 | $ value );
131+ $ packed = pack ('C ' , 0b00000000 | $ value );
132+ $ output .= $ little ? strrev ($ packed ) : $ packed ;
130133 } elseif ($ value > -16 && $ value < 0 ) { //-TINY_INT
131- $ output .= pack ('c ' , 0b11110000 | $ value );
134+ $ packed = pack ('c ' , 0b11110000 | $ value );
135+ $ output .= $ little ? strrev ($ packed ) : $ packed ;
132136 } elseif ($ value > -128 && $ value < -17 ) { //INT_8
133- $ output .= chr (0xC8 ) . pack ('c ' , $ value );
137+ $ packed = pack ('c ' , $ value );
138+ $ output .= chr (0xC8 ) . ($ little ? strrev ($ packed ) : $ packed );
134139 } elseif (($ value > 128 && $ value < 32767 ) || ($ value > -32768 && $ value < -129 )) { //INT_16
135- $ output .= chr (0xC9 ) . pack ('s ' , $ value );
140+ $ packed = pack ('s ' , $ value );
141+ $ output .= chr (0xC9 ) . ($ little ? strrev ($ packed ) : $ packed );
136142 } elseif (($ value > 32768 && $ value < 2147483647 ) || ($ value > -2147483648 && $ value < -32769 )) { //INT_32
137- $ output .= chr (0xCA ) . pack ('l ' , $ value );
143+ $ packed = pack ('l ' , $ value );
144+ $ output .= chr (0xCA ) . ($ little ? strrev ($ packed ) : $ packed );
138145 } elseif (($ value > 2147483648 && $ value < 9223372036854775807 ) || ($ value > -9223372036854775808 && $ value < -2147483649 )) { //INT_64
139- $ output .= chr (0xCB ) . pack ('q ' , $ value );
146+ $ packed = pack ('q ' , $ value );
147+ $ output .= chr (0xCB ) . ($ little ? strrev ($ packed ) : $ packed );
140148 } else {
141149 throw new Exception ('Integer out of range ' );
142150 }
0 commit comments