将整数/浮点数转换为不同的体系结构表示(可以是十六进制)

时间:2010-09-05 15:08:04

标签: php serialization binary

是否有任何lib女巫我可以用它来转换不同架构表示之间的整数和浮点数?

即。 -255与big-endian 2byte有符号整数是:0xff7f和4字节有符号整数是0xffffff7f和其他相同...

我在PEAR中找到了二进制工具包,但它的状态是不受维护的,并且停止在0.3.0版本,我不确定它是否会产生正确的结果。

[编辑]

我知道功能包,但它的结果就像在手册中说的是依赖于机器的,巫婆不是我想要的结果

1 个答案:

答案 0 :(得分:0)

对于整数,pack函数有几种与机器无关的模式:

n   unsigned short (always 16 bit, big endian byte order)
v   unsigned short (always 16 bit, little endian byte order)
N   unsigned long (always 32 bit, big endian byte order)
V   unsigned long (always 32 bit, little endian byte order)

对于花车,没有这样的事情:

f   float (machine dependent size and representation)
d   double (machine dependent size and representation)

但是,几乎所有系统都会将IEEE 754 single precision用于“浮动”,将double precision用于“d”。

所以,唯一可变的是endianness。您可以检查系统运行的系统的字节顺序,例如:

$isLittle = pack('s', 1) == "\x01\x00")

然后使用strrev反转数据的字节顺序(如果适用)。