8 文字の文字列を 32 ビットの符号付き整数に変換する簡潔な方法を探しています。
MSDNの Convert.ToInt32 メソッドのリファレンスを参照してください。
これは、VB の現在の .NET コードです。
Convert.ToInt32("c0f672d4", 16)
// returns -1057590572
32 ビットと 64 ビットの両方で PHP 5.3+ を使用して同じ戻り値を取得するにはどうすればよいですか?
pack / unpack関数とビット単位の演算子の組み合わせが必要になる可能性があると思いますが、まだ正しい組み合わせが見つかりません。
更新: 2013-07-10 以下は 32 ビット システムでのみ機能します。
$str = 'c0f672d4';
$int = intval( substr( $str, 0, 4 ), 16 ); // read high 16 bit word
$int <<= 16; // shift hi word correct position
$int |= intval( substr( $str, 4, 4 ), 16 ); // read low 16 bit word
echo $int;
// returns -1057590572
上記の問題は、64 ビット システムで動作しないことです。代わりに3237347344
、上記の PHP コードを使用して値を取得します。
32ビットと64ビットに移植可能なPHPで一貫した整数を取得するためのアイデアはありますか?