php - 在 PHP 中将数字转换为字节

标签 php casting byte

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

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

结果会是

-36

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

最佳答案

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

编辑 这模拟了一个带符号的 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 移动到 int 的 MSB 位置,如 php 所见,即您在右侧添加 56 个零位。除法会“剥离”这些位,同时保持值的符号。

关于php - 在 PHP 中将数字转换为字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3361642/

相关文章:

Java 编译器和接口(interface)转换

java - 通过接口(interface)对对象进行显式转换。括号有什么用

php - 在 IF 条件下与 int 和 string 进行比较

c# - 注册表中的 Byte[] 仅返回一个字母

php - 按子数组排序数组

javascript - 为什么 PHP 文件不能正确读取 javascript?

java - Java 中的 XML 转换具有最佳性能

C 结构体中 char[] 的大小

javascript - 什么可以覆盖 html 输入中的属性?

php - 这个函数我写错了吗?有人可以告诉我我在哪里犯了错误吗?