你如何按位移位一个在PHP中的数据类型字符串的十六进制字符串?

时间:2012-09-18 15:47:52

标签: php binary hex

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

1 个答案:

答案 0 :(得分:3)

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

$byte1 = hexdec(substr($hex, 12, 2));
$byte2 = hexdec(substr($hex, 14, 2));
$result = ($byte1 << 8) + $byte2;