use*_*162 3 php python math binary
我尝试(在PHP中)读取两个字节(16位)的二进制补码值并返回一个带符号的十进制数.
我不确定这两个恭维数学应该如何工作,但是从php.net,我设法得到它几乎显示我的期望.我认为我遇到的问题是我没有得到任何负面价值.
我有以下代码:
function _bin16dec($bin) {
// Function to convert 16bit binary numbers to integers using two's complement
$num = bindec($bin);
if($num > 0xFFFF) { return false; }
if($num >= 0x8000) {
return -(($num ^ 0xFFFF)+1);
} else {
return $num;
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码是有人在网上提出的,但它在python中不明白.
def twoscomp( x ) :
"This returns a 16-bit signed number (two's complement)"
if (0x8000 & x):
x = - (0x010000 - x)
return x
Run Code Online (Sandbox Code Playgroud)
应用程序从陀螺仪中为2的补码形式中的每个轴读取两个字节.
提前致谢!
山姆
假设这个Python函数符合您的预期......
def twoscomp( x ) :
"""This returns a 16-bit signed number (two's complement)"""
if (0x8000 & x):
x = - (0x010000 - x)
return x
Run Code Online (Sandbox Code Playgroud)
...这个PHP函数应该做同样的事情.
function _bin16dec($bin) {
// converts 16bit binary number string to integer using two's complement
$num = bindec($bin) & 0xFFFF; // only use bottom 16 bits
if (0x8000 & $num) {
$num = - (0x010000 - $num);
}
return $num;
}
Run Code Online (Sandbox Code Playgroud)
这段代码适用于PHP 5.3.15.如果您想进一步解释,请告诉我.
留学美国相关考试