0

我有一个 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

您根本不需要转换为二进制,只需移动十进制数字即可。如果我正确理解您需要的数学,这应该有效:

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