我们正在尝试使用PHP将VB系统转换为基于Web的系统。目前我们无法理解VB中的几行,这使得我们很难将其转换为php。
这是我的VB代码:
Dim data1 As Byte
Dim data1 As Byte
Dim num = 5117
data1 = (num >> 6) And &HFF
data2 = num And &H3F
这是我的PHP代码:
$data1 = ($num >> 6) && &HFF;
$data2 = $num && &H3F;
现在的问题是,当我们运行VB代码并输出时,它显示的不同于php。例如在vb中,data2显示为61但在php中它显示为1.任何人都可以帮助我们解决这个问题。
答案 0 :(得分:1)
我相信PHP中的按位AND运算符是&而不是&&并且没有像这样指定十六进制文字。尝试这样的事情:
$data1 = ($num >> 6) & 0xFF;
$data2 = $num & 0x3F;
查看bitwise operators的PHP文档。对于hex literals。
答案 1 :(得分:0)
在PHP
& HFF 和& H3F 不会被视为您定义的Hexadecimal
代码。
$data1 = ($num >> 6) && &HFF;
$data2 = $num && &H3F;
将生成错误unexpected & ..
您应该尝试使用 -
$data1 = ($num >> 6) && hexdec ('&HFF');
$data2 = $num && hexdec ('&H3F');
hexdec()
会将十六进制转换为十进制。
但在这种情况下,
$num && hexdec ('&H3F')
将返回true
。所以$data1
&$data2
将包含true
。如果你echo
他们,你会得到1
。