是否有任何lib女巫我可以用它来转换不同架构表示之间的整数和浮点数?
即。 -255与big-endian 2byte有符号整数是:0xff7f和4字节有符号整数是0xffffff7f和其他相同...
我在PEAR中找到了二进制工具包,但它的状态是不受维护的,并且停止在0.3.0版本,我不确定它是否会产生正确的结果。
[编辑]
我知道功能包,但它的结果就像在手册中说的是依赖于机器的,巫婆不是我想要的结果
答案 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
反转数据的字节顺序(如果适用)。