改变PHP中的字节顺序

rob*_*han 6 php file-format endianness

所以我在PHP中创建一个类来解析VPK文件格式.

但是我遇到了一个问题:

object(VPKHeader)#2 (3) {
    ["Signature"]=>
  string(8) "3412aa55"
    ["Version"]=>
  string(4) "1000"
    ["DirectoryLength"]=>
  int(832512)
}
Run Code Online (Sandbox Code Playgroud)

签名应该是0x55aa1234,但我正在读取的签名是0x3412aa55.

如何在PHP中切换字节顺序?

Art*_*ct2 6

如果您的十六进制值始终是字符串,您可以使用以下函数:

function swapEndianness($hex) {
    return implode('', array_reverse(str_split($hex, 2)));
}
Run Code Online (Sandbox Code Playgroud)

同意,这不是最有效的,但在我看来代码非常优雅。此外,它适用于所有大小的数字。