Why do you need word specifically? I personally had a hard time with PHP in the beginning exactly because I migrated from the Turbo Pascal/Dephi environment. Just learn how to deal with the new environment: use larger data types and shift right the byte in order to create a word and use logical "and" with 65535 in order to mask larger-than-word values.
Bogdan Stefan Pettersson wrote: > Hello all, > > I'm trying to convert a function done in Delphi (pascal) to PHP. This > function is part of simple text encryption/decryption method. However, I > have a really hard time to make this work in PHP. This is the Delphi code: > > Function RotateBits(C: Char; Bits: Integer): Char; > var > SI : Word; > begin > Bits := Bits mod 8; > // Are we shifting left? > if Bits < 0 then > begin > // Put the data on the right half of a Word (2 bytes) > SI := MakeWord(Byte(C),0); > // Now shift it left the appropriate number of bits > SI := SI shl Abs(Bits); > end > else > begin > // Put the data on the left half of a Word (2 bytes) > SI := MakeWord(0,Byte(C)); > // Now shift it right the appropriate number of bits > SI := SI shr Abs(Bits); > end; > // Finally, Swap the bytes > SI := Swap(SI); > // And OR the two halves together > SI := Lo(SI) or Hi(SI); > Result := Chr(SI); > end; > > and this the beginning of my attempt to do the same thing in PHP: > > function RotateBits($C, $Bits) { > $Bits = $Bits % 8; > > if ($Bits < 0 ) { > $C = $C << abs($Bits); > } else { > $C = $C >> abs($Bits); > } > > return chr($C); > } > > In the Delphi code the MakeWord function is a macro: > #define MAKEWORD(a, b) \ ((WORD) (((BYTE) (a)) | ((WORD) ((BYTE) (b))) << > 8)) > And Swap exchanges the high order byte with the low order byte of the word. > > Now my question is, how can I work with bytes and words in PHP? The closest > I've found is just the integer, that may be of different sizes depending on > system. Or, as a workaround, is there any way to detect the number of bytes > an integer is on the current system? > > Thanks in advance. > > Best regards, > Stefan Pettersson > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > To contact the list administrators, e-mail: [EMAIL PROTECTED] -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]