0

私は 2 バイトの長さの 16 進文字列を持っており、最初のバイトを左にビット単位でシフトし、2 番目のバイトを追加する必要があります。どちらの文字列も 32 文字の長さの文字列から取得されます。文字列は、解析中のデータ ファイルから取得されます。

$hex="05E000752F0100D0A500503891FB199A"; //example line of data from file

$vcanvbatt=(base_convert(((base_convert(substr($hex,12,2),16,2)<<8)+base_convert(substr($hex,14,2),16,2)),2,10))/100;
4

1 に答える 1

3

2 進数に変換する必要はまったくありません。10 進数をシフトするだけで済みます。あなたが必要とする数学を正しく理解していれば、これはうまくいくはずです:

$byte1 = hexdec(substr($hex, 12, 2));
$byte2 = hexdec(substr($hex, 14, 2));
$result = ($byte1 << 8) + $byte2;
于 2012-09-18T16:02:06.077 に答える