将数字转换为PHP中的字节

问题描述 投票:4回答:3

在Java中,我可以轻松地将数字强制转换为字节,例如:

System.err.println((byte) 13020);

结果将是

-36

现在如何在PHP中实现相同的功能?

php casting byte
3个回答
2
投票

也许做模256表达式(如果是无符号的)或模256加负128。

$val = ($val % 256) - 128

如果您只想要一个值,这项工作。如果您想要一个实数字节,也许pack()函数会在这里有所帮助。

编辑:对,0将是128,所以也许此解决方案可以起作用:

$val = (($val+128) % 256) - 128

6
投票
echo ($a&0x7f) + ($a&0x80?-128:0);

edit模仿一个带符号的8位值应该实际发生的情况。当MSB(第7位)为零时,我们只有这7位的值。将MSB设置为1,我们从-128(即1000000b == -128d)开始。

您还可以利用PHP内部使用整数值的事实:

$intsize = 64; // at least, here it is...
echo ($a<<($intsize-8))/(1<<($intsize-8));

因此,您将字节的MSB移到了php所看到的int的MSB位置,即,在右侧添加了56个零位。除法“除掉”那些位,同时保持值的符号。


0
投票

你不能。 PHP没有Java那样的byte数据类型。

© www.soinside.com 2019 - 2024. All rights reserved.