HexDecは、PHPの組み込み関数であり、16進数文字列を対応する10進数に変換します。使用は非常に簡単です:
int hexdec ( string $hex_string )
$ hex_stringは、入力hex文字列であり、ケース非感受性です。
返品値は、対応する小数整数です。
センサーが通信インターフェイス(シリアルポート、I2C、SPIなどなど)を介してデータを送信する場合、伝送帯域幅を保存して分析を促進するために、各バイトのデータコンテンツを表すために16進エンコードが使用されます。たとえば、センサーによって返される温度値は0x1aであり、小数点の26に対応している場合があります。
センサーから一連の16進列をセンサーから受け取るとし、センサーの異なる測定値を表し、2つの文字が1つのバイトを表しています。以下は、 HexDecを使用して温度値を解析して計算する方法を示すPHPコードです。
<?php
// センサーによって返される16進数データをシミュレートします,グループ内の2文字はバイトを表します
$hexData = "1A3F0B";
// 最初のバイトを取ります '1A',小数に変換します
$tempHex = substr($hexData, 0, 2);
$tempDec = hexdec($tempHex);
echo "センサー温度値(小数):" . $tempDec; // 出力:26
?>
この例では、 HexDec( '1a')が26を返し、温度値が26度であることを示します(特定の単位はセンサーに従って定義されています)。
通常、センサーによって返されるデータパケットには、次のような複数のフィールドが含まれています。
2バイト温度
2バイトの湿度
1バイトステータスコード
パケットが次のような16進の文字列であると仮定します。
$packet = "00FA007D01";
説明:
温度: 00FA (16進数)
湿度: 007d (16進数)
ステータスコード: 01
HexDecを使用して、副帯で1つずつ分析できます。
<?php
$packet = "00FA007D01";
$temperatureHex = substr($packet, 0, 4);
$humidityHex = substr($packet, 4, 4);
$statusHex = substr($packet, 8, 2);
$temperature = hexdec($temperatureHex); // 250
$humidity = hexdec($humidityHex); // 125
$status = hexdec($statusHex); // 1
echo "温度:" . $temperature . "\n";
echo "湿度:" . $humidity . "\n";
echo "ステータスコード:" . $status . "\n";
?>
データ範囲: HexDecは浮動小数点数を返します。数が大きすぎる場合(PHP整数の範囲を超える)、GMPやBCMATH拡張機能の使用など、他の方法で処理する必要があります。
データ形式: HexDecに入力された文字列には、法的16進体のみ(0-9、AF、AF)のみが含まれていることを確認してください。
症例効果はありません: HexDecは症例に敏感ではなく、 HexDec( '1a')とHexdec( '1a')の結果は同じです。