如何在php中处理二进制数据(而不是二进制字符串)
How to deal with binary data in php (not binary string)?
我编写了一个C++程序,将POST数据发送到php。我的数据是二进制的123456,即0x0001e240。
我的php文件读起来像
$f=fopen("php://input", "r");
if (!$f) die ("cannot open");
$data = fread($f, 4);
echo $data;
在我的接收程序(C++)中,我可以看到返回的数据正是0x0001e240,所以我相信php确实接受了纯二进制的东西,并保存到$data中。
但是,我想在php中获得123456。我尝试过bindec、hexdec等函数,但都不起作用。如何从$data中获取数字。
另外,我需要关心php中的endians吗?我现在使用windows环境在本地工作,但我最终会把我的代码放到云端。
编辑
$f=fopen("test.bin", "rb");
if (!$f) die ("cannot open");
$data = fread($f, 4);
echo $data;
其中test.bin是一个bin文件,包含0x0001e240。我似乎在$data中得到了一个字符串,它与0x00、0x01、0xe2和0x40的ASCII合成。如何将它们转换为数值?
您可以使用unpack
:
$num = unpack('n', $data);
使用大写字母表示无符号整数,使用v
(或V
)表示小端序。是的,你必须担心endianness。只要找出它是什么并坚持下去。
相关文章:
- 查找"n"二进制字符串中最长公共子字符串的长度
- 如何在C ++中将二进制字符串128位转换为十进制字符串?
- 如何排列二进制字符串以最小化它们之间的距离
- 将二进制字符串/文件内容从 c++ 传递到节点 js
- C++ 将二进制字符串转换为整数或比较 2 个字符串以查找差异数
- 将大型二进制字符串写入二进制文件
- 将浮点数向量转换为十六进制/二进制字符串
- 我如何在二进制字符串中解开KTH集位
- 在 c++ 中将负 int 转换为二进制字符串
- 将二进制字符串转换为十进制
- 在二进制字符串的数字之间留出空间
- 将整数转换为二进制字符串
- 如何将二进制字符串转换为 ASCII 字符串
- C ++检查字符串是否包含字符以及如何将二进制字符串转换为整数
- 在 C/C++ 中将非常大的 int(写为字符串)转换为二进制字符串
- 如何将二进制字符串转换为整数字符串
- 将二进制字符串转换为整数字符串c++
- 构建一个二进制字符串c++
- 这是从二进制字符串转换为十进制值的无效方法吗?
- 将二进制字符串写入二进制文件