2017-10-05 16 views
4

0x00000008,0x20000000などのアクセス許可を使用するAPIをPHPアプリケーションと統合しています。ここで、それぞれのアクセス許可はそれぞれのアクセス許可を表します。それらのAPIは整数を返しました。 PHPでは、0x20000000のようなものを整数に変換するにはどのようにしてビット演算子を利用できますか?PHP 16進整数へ

別のデベロッパーは、これらの数値が16進法の注釈だと思っていたと私に言いましたが、PHPでは限られた結果しか得られません。 これはどのような種類の番号で、integerのアクセス権セットを使用し、ビット単位の演算子を使用すれば、ユーザーが0x00000008かどうかを判断できます。

+1

作品://3v4l.org/g1ggf http://php.net/manual/en/language.types.integer.php#language.types .integer.syntax – Calimero

+1

PHPは整数変数**に対して '0x ...'表記法をネイティブにサポートしていますが、APIから受け取った文字列がある場合は、 hexdec() ' – iainn

+0

誰かがこれを回答として投稿できますか? – Webnet

答えて

3

PHPのドキュメントで述べたように、C言語の場合と同様に、この形式はPHPではネイティブ整数(16進表記)として認識されます。

<?php 
echo 0xDEADBEEF; // outputs 3735928559 

デモhttps://3v4l.org/g1ggf

参考http://php.net/manual/en/language.types.integer.php#language.types.integer.syntax

彼らは普通の整数であるため、このようにあなたの上のレジスタのサイズに関して、それらの上に任意のビット演算を実行することができサーバーのプロセッサー(現時点では、64ビットアーキテクチャーで作業している可能性があります。適用する場合は、phpinfo()と他の手段で疑問を持って確認できます)。

echo 0x00000001<<3; // 1*2*2*2, outputs 8 

デモhttps://3v4l.org/AKv7H

参考http://php.net/manual/en/language.operators.bitwise.php

あなたはAPIあなたからデータを読んでいることから、それぞれの答えとコメントに@iainnと@SaltyPotatoによって示唆されるようにネイティブ整数の代わりに文字列として得られたこれらの値を扱わなければならないかもしれません。これを克服するには、使用する前に変換する関数hexdecを実行するだけです。

参考:box.httpsのうちhttp://php.net/manual/en/function.hexdec.php

2

あなたはAPIをPHPからそれを受けているので、文字列

echo hexdec('0x00000008');

としてそれを解釈します。これは動作するはず整数

を返します。