我有一个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;
答案 0 :(得分:3)
根本不需要转换为二进制,只需移动十进制数即可。如果我理解你需要的数学,这应该有效:
$byte1 = hexdec(substr($hex, 12, 2));
$byte2 = hexdec(substr($hex, 14, 2));
$result = ($byte1 << 8) + $byte2;