首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP从64位到32位的非序列化整数

PHP从64位到32位的非序列化整数
EN

Stack Overflow用户
提问于 2011-10-26 22:43:47
回答 3查看 1.1K关注 0票数 1

我一直在尝试在32位服务器上反序列化在64位服务器上序列化的对象。我已经将我的问题隔离为对象中的一个整数。这是这个问题的一个小复制品。

在64位计算机上:

代码语言:javascript
复制
$i = serialize('20110510134021'); //i:20110510134021;

在32位计算机上:

代码语言:javascript
复制
$i = unserialize('i:20110510134021;');

给出了错误

代码语言:javascript
复制
Notice: unserialize(): Error at offset 0 of 16 bytes

现在我明白了,这些序列化方法不应该用于跨系统数据传输。然而,我们只是尝试将数据迁移到另一个系统,而不是积极地将其用于传输。这是一次性的事情。

我认为这可能是由于整数溢出造成的,但即使在32位服务器上,我也可以这样做

代码语言:javascript
复制
$i = 20110510134021;
echo $i;

而且它会工作得很好。我猜PHP整数类型可以缩放为双精度类型或类似的类型。但是为什么它在非序列化时不这样做呢?

如何对这些对象进行反序列化?如果我不能,有没有办法把它们转换成其他的东西?最后,有没有人用PHP本身写了一个反序列化方法?或者有关于协议的详细信息?我可以使用它,并为这些整数自定义大小写。

谢谢。

注意:我不能访问原始数据,只能访问序列化后的结果。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7904355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档